mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-10-25 15:25:01 +03:00
feat(hosts): add drag-and-drop and global subscription ordering (#6895)
Hosts already had one saved order on the Hosts page, but subscriptions honoured it only inside each inbound, so a host of a later inbound could never come before one of an earlier inbound (#6894). A new opt-in setting makes raw/base64, Clash/Mihomo and JSON subscriptions follow the Hosts page order across inbounds; the default keeps today's inbound-first output unchanged. The Hosts table gains drag-and-drop reordering next to the Up/Down buttons, on a pointer-reorder hook the Routing Rules table now shares.
This commit is contained in:
@@ -19,7 +19,9 @@ import (
|
||||
// inbounds.
|
||||
func (s *SubService) hostEndpoints(inbound *model.Inbound, format string) []map[string]any {
|
||||
var hosts []*model.Host
|
||||
if err := database.GetDB().
|
||||
if s.hostsByInbound != nil {
|
||||
hosts = s.hostsByInbound[inbound.Id]
|
||||
} else if err := database.GetDB().
|
||||
Where("inbound_id = ? AND is_disabled = ?", inbound.Id, false).
|
||||
Order("sort_order asc, id asc").
|
||||
Find(&hosts).Error; err != nil {
|
||||
@@ -32,7 +34,7 @@ func (s *SubService) hostEndpoints(inbound *model.Inbound, format string) []map[
|
||||
defaultDest := s.resolveInboundAddress(inbound)
|
||||
eps := make([]map[string]any, 0, len(hosts))
|
||||
for _, h := range hosts {
|
||||
if slices.Contains(h.ExcludeFromSubTypes, format) {
|
||||
if h.IsDisabled || slices.Contains(h.ExcludeFromSubTypes, format) {
|
||||
continue
|
||||
}
|
||||
if IsCIDR(h.Address) {
|
||||
|
||||
Reference in New Issue
Block a user