feat: 支持主分组隐藏节点并保留排序

This commit is contained in:
2026-10-05 10:00:06 +08:00
parent b6aa2bf30d
commit 6ed0307ea9
8 changed files with 124 additions and 14 deletions
+23 -3
View File
@@ -77,6 +77,7 @@ export type SubscriptionSettings = {
extraProxyGroups: string;
profileName: string;
mainProxyGroupMemberSlugs: string[];
mainProxyGroupHiddenSlugs: string[];
proxyGroups: ProxyGroupConfig[];
};
@@ -1193,6 +1194,9 @@ export async function getSubscriptionSettings() {
mainProxyGroupMemberSlugs: JSON.parse(
map.get("main_proxy_group_member_slugs_json") ?? "[]",
) as string[],
mainProxyGroupHiddenSlugs: JSON.parse(
map.get("main_proxy_group_hidden_slugs_json") ?? "[]",
) as string[],
proxyGroups: JSON.parse(
map.get("proxy_groups_json") ?? "[]",
) as ProxyGroupConfig[],
@@ -1234,10 +1238,13 @@ export async function saveProxyGroups(proxyGroups: ProxyGroupConfig[]) {
).run("proxy_groups_json", JSON.stringify(proxyGroups), now);
}
export async function saveMainProxyGroupMemberSlugs(memberSlugs: string[]) {
export async function saveMainProxyGroupMemberSlugs(
memberSlugs: string[],
hiddenSlugs?: string[],
) {
const db = await ensureDb();
const now = dbNow();
db.prepare(
const upsert = db.prepare(
`
INSERT INTO app_settings (key, value, updated_at)
VALUES (?, ?, ?)
@@ -1245,7 +1252,20 @@ export async function saveMainProxyGroupMemberSlugs(memberSlugs: string[]) {
value = excluded.value,
updated_at = excluded.updated_at
`,
).run("main_proxy_group_member_slugs_json", JSON.stringify(memberSlugs), now);
);
db.transaction(() => {
upsert.run(
"main_proxy_group_member_slugs_json",
JSON.stringify(memberSlugs),
now,
);
if (hiddenSlugs !== undefined)
upsert.run(
"main_proxy_group_hidden_slugs_json",
JSON.stringify([...new Set(hiddenSlugs)]),
now,
);
})();
}
export async function listSubscriptionNodes() {