summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorBrendan Allan <[email protected]>2026-02-19 09:34:23 +0800
committerBrendan Allan <[email protected]>2026-02-19 09:34:23 +0800
commitd620455531443340d2719510d37e80af433cef7e (patch)
tree888983cb4f3989ee5abb018d7bae4f39351f22fd
parent568eccb4c654e83382253eb0c1478d24585288aa (diff)
downloadopencode-d620455531443340d2719510d37e80af433cef7e.tar.gz
opencode-d620455531443340d2719510d37e80af433cef7e.zip
app: deduplicate allServers list
-rw-r--r--packages/app/src/components/dialog-select-server.tsx7
-rw-r--r--packages/app/src/context/server.tsx12
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,