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,