diff options
| author | Brendan Allan <[email protected]> | 2026-02-19 09:34:23 +0800 |
|---|---|---|
| committer | Brendan Allan <[email protected]> | 2026-02-19 09:34:23 +0800 |
| commit | d620455531443340d2719510d37e80af433cef7e (patch) | |
| tree | 888983cb4f3989ee5abb018d7bae4f39351f22fd | |
| parent | 568eccb4c654e83382253eb0c1478d24585288aa (diff) | |
| download | opencode-d620455531443340d2719510d37e80af433cef7e.tar.gz opencode-d620455531443340d2719510d37e80af433cef7e.zip | |
app: deduplicate allServers list
| -rw-r--r-- | packages/app/src/components/dialog-select-server.tsx | 7 | ||||
| -rw-r--r-- | 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 ( <div class="flex items-center gap-3 min-w-0 flex-1 group/item"> <Show @@ -446,8 +447,8 @@ export function DialogSelectServer() { > <ServerRow conn={i} - status={store.status[ServerConnection.key(i)]} - dimmed={store.status[ServerConnection.key(i)]?.healthy === false} + status={store.status[key]} + dimmed={store.status[key]?.healthy === false} class="flex items-center gap-3 px-4 min-w-0 flex-1" badge={ <Show when={defaultUrl() === i.http.url}> @@ -460,7 +461,7 @@ export function DialogSelectServer() { </Show> <Show when={store.editServer.id !== i.http.url}> <div class="flex items-center justify-center gap-5 pl-4"> - <Show when={current() === i}> + <Show when={ServerConnection.key(current()) === key}> <p class="text-text-weak text-12-regular">{language.t("dialog.server.current")}</p> </Show> 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<ServerConnection.Any> => [ + const allServers = createMemo((): Array<ServerConnection.Any> => { + 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, |
