From 3c1c355ae4a9d5890e86e90356b4fa74c1e57cf8 Mon Sep 17 00:00:00 2001 From: Hiddify Date: Wed, 31 Jan 2024 11:03:36 +0100 Subject: [PATCH] new: show groups always on top --- .../proxy/overview/proxies_overview_notifier.dart | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/features/proxy/overview/proxies_overview_notifier.dart b/lib/features/proxy/overview/proxies_overview_notifier.dart index ae2732be..292094a4 100644 --- a/lib/features/proxy/overview/proxies_overview_notifier.dart +++ b/lib/features/proxy/overview/proxies_overview_notifier.dart @@ -8,6 +8,7 @@ import 'package:hiddify/features/connection/notifier/connection_notifier.dart'; import 'package:hiddify/features/proxy/data/proxy_data_providers.dart'; import 'package:hiddify/features/proxy/model/proxy_entity.dart'; import 'package:hiddify/features/proxy/model/proxy_failure.dart'; +import 'package:hiddify/singbox/model/singbox_proxy_type.dart'; import 'package:hiddify/utils/pref_notifier.dart'; import 'package:hiddify/utils/riverpod_utils.dart'; import 'package:hiddify/utils/utils.dart'; @@ -33,7 +34,7 @@ class ProxiesSortNotifier extends _$ProxiesSortNotifier with AppLogger { late final _pref = Pref( ref.watch(sharedPreferencesProvider).requireValue, "proxies_sort_mode", - ProxiesSort.unsorted, + ProxiesSort.delay, mapFrom: ProxiesSort.values.byName, mapTo: (value) => value.name, ); @@ -92,14 +93,20 @@ class ProxiesOverviewNotifier extends _$ProxiesOverviewNotifier with AppLogger { final sortedProxies = []; for (final group in proxies) { final sortedItems = switch (sortBy) { - ProxiesSort.name => group.items.sortedBy((e) => e.tag), + ProxiesSort.name => group.items.sortedWith((a, b) { + if(a.type.isGroup && !b.type.isGroup) return -1; + if(!a.type.isGroup && b.type.isGroup) return 1; + return a.tag.compareTo(b.tag); + }), ProxiesSort.delay => group.items.sortedWith((a, b) { + if(a.type.isGroup && !b.type.isGroup) return -1; + if(!a.type.isGroup && b.type.isGroup) return 1; + final ai = a.urlTestDelay; final bi = b.urlTestDelay; if (ai == 0 && bi == 0) return -1; if (ai == 0 && bi > 0) return 1; if (ai > 0 && bi == 0) return -1; - if (ai == bi && a.type.isGroup) return -1; return ai.compareTo(bi); }), ProxiesSort.unsorted => group.items,