From d620455531443340d2719510d37e80af433cef7e Mon Sep 17 00:00:00 2001 From: Brendan Allan Date: Thu, 19 Feb 2026 09:34:23 +0800 Subject: [PATCH] app: deduplicate allServers list --- packages/app/src/components/dialog-select-server.tsx | 7 ++++--- packages/app/src/context/server.tsx | 12 ++++++++---- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/packages/app/src/components/dialog-select-server.tsx b/packages/app/src/components/dialog-select-server.tsx index fa5d2d36c..76c8ff60e 100644 --- a/packages/app/src/components/dialog-select-server.tsx +++ b/packages/app/src/components/dialog-select-server.tsx @@ -427,6 +427,7 @@ export function DialogSelectServer() { } > {(i) => { + const key = ServerConnection.key(i) return (
@@ -460,7 +461,7 @@ export function DialogSelectServer() {
- +

{language.t("dialog.server.current")}

diff --git a/packages/app/src/context/server.tsx b/packages/app/src/context/server.tsx index 336f8aa98..389371702 100644 --- a/packages/app/src/context/server.tsx +++ b/packages/app/src/context/server.tsx @@ -102,15 +102,19 @@ export const { use: useServer, provider: ServerProvider } = createSimpleContext( }), ) - const allServers = createMemo( - (): Array => [ + const allServers = createMemo((): Array => { + const servers = [ ...(props.servers ?? []), ...store.list.map((value) => ({ type: "http" as const, http: typeof value === "string" ? { url: value } : value, })), - ], - ) + ] + + const deduped = new Map(servers.map((conn) => [ServerConnection.key(conn), conn])) + + return [...deduped.values()] + }) const [state, setState] = createStore({ active: props.defaultServer,