From 49707c211773aaabf0721a95c67b569861c8ab94 Mon Sep 17 00:00:00 2001 From: Brendan Allan <14191578+Brendonovich@users.noreply.github.com> Date: Tue, 26 May 2026 13:41:13 +0800 Subject: [PATCH] fix(app): deduplicate and merge server connections in resolveServerList (#29313) --- packages/app/src/context/server.tsx | 30 +++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/packages/app/src/context/server.tsx b/packages/app/src/context/server.tsx index 2758fbed73..8532c8249e 100644 --- a/packages/app/src/context/server.tsx +++ b/packages/app/src/context/server.tsx @@ -36,24 +36,30 @@ export function resolveServerList(input: { props?: Array stored: StoredServer[] }): Array { - const servers = [ - ...(input.props ?? []), - ...input.stored.map((value) => + const deduped = new Map( + input.props?.map((v) => [ServerConnection.key(v), v]) ?? [], + ) + + for (const value of input.stored) { + const conn: ServerConnection.Http = typeof value === "string" ? { type: "http" as const, http: { url: value }, } - : value, - ), - ] - - const deduped = new Map() - for (const value of servers) { - const conn: ServerConnection.Any = "type" in value ? value : { type: "http", http: value } + : "http" in value + ? value + : { type: "http", http: value } const key = ServerConnection.key(conn) - if (deduped.has(key) && conn.type === "http" && !conn.authToken) continue - deduped.set(key, conn) + + const existing = deduped.get(key) + if (existing) + deduped.set(key, { + ...existing, + ...conn, + http: { ...existing.http, ...conn.http }, + }) + else deduped.set(key, conn) } return [...deduped.values()]