Browse Source

fix(desktop): don't persist fallback server urls

Adam 1 month ago
parent
commit
72ab4260ee

+ 8 - 3
packages/app/src/components/dialog-select-server.tsx

@@ -63,9 +63,14 @@ export function DialogSelectServer() {
     onCleanup(() => clearInterval(interval))
   })
 
-  function select(value: string) {
-    if (store.status[value]?.healthy === false) return
+  function select(value: string, persist?: boolean) {
+    if (!persist && store.status[value]?.healthy === false) return
     dialog.close()
+    if (persist) {
+      server.add(value)
+      navigate("/")
+      return
+    }
     server.setActive(value)
     navigate("/")
   }
@@ -87,7 +92,7 @@ export function DialogSelectServer() {
     }
 
     setStore("url", "")
-    select(value)
+    select(value, true)
   }
 
   return (

+ 16 - 8
packages/app/src/context/server.tsx

@@ -48,6 +48,19 @@ export const { use: useServer, provider: ServerProvider } = createSimpleContext(
     function setActive(input: string) {
       const url = normalizeServerUrl(input)
       if (!url) return
+      setActiveRaw(url)
+    }
+
+    function add(input: string) {
+      const url = normalizeServerUrl(input)
+      if (!url) return
+
+      const fallback = normalizeServerUrl(props.defaultUrl)
+      if (fallback && url === fallback) {
+        setActiveRaw(url)
+        return
+      }
+
       batch(() => {
         if (!store.list.includes(url)) {
           setStore("list", store.list.length, url)
@@ -71,15 +84,10 @@ export const { use: useServer, provider: ServerProvider } = createSimpleContext(
 
     createEffect(() => {
       if (!ready()) return
+      if (active()) return
       const url = normalizeServerUrl(props.defaultUrl)
       if (!url) return
-
-      batch(() => {
-        if (!store.list.includes(url)) {
-          setStore("list", store.list.length, url)
-        }
-        setActiveRaw(url)
-      })
+      setActiveRaw(url)
     })
 
     const isReady = createMemo(() => ready() && !!active())
@@ -123,7 +131,7 @@ export const { use: useServer, provider: ServerProvider } = createSimpleContext(
         return store.list
       },
       setActive,
-      add: setActive,
+      add,
       remove,
       projects: {
         list: projectsList,