diff options
Diffstat (limited to 'packages/desktop/src')
| -rw-r--r-- | packages/desktop/src/index.tsx | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/packages/desktop/src/index.tsx b/packages/desktop/src/index.tsx index ffb178672..6393b8b45 100644 --- a/packages/desktop/src/index.tsx +++ b/packages/desktop/src/index.tsx @@ -13,7 +13,7 @@ import { AsyncStorage } from "@solid-primitives/storage" import { fetch as tauriFetch } from "@tauri-apps/plugin-http" import { Store } from "@tauri-apps/plugin-store" import { Logo } from "@opencode-ai/ui/logo" -import { Suspense, createResource, ParentProps } from "solid-js" +import { Accessor, JSX, createResource } from "solid-js" import { UPDATER_ENABLED } from "./updater" import { createMenu } from "./menu" @@ -283,7 +283,9 @@ render(() => { )} <AppBaseProviders> <ServerGate> - <AppInterface /> + {serverUrl => + <AppInterface defaultUrl={serverUrl()} /> + } </ServerGate> </AppBaseProviders> </PlatformProvider> @@ -291,26 +293,21 @@ render(() => { }, root!) // Gate component that waits for the server to be ready -function ServerGate(props: ParentProps) { - const [status] = createResource(async () => { - if (window.__OPENCODE__?.serverReady) return - return await invoke("ensure_server_started") - }) +function ServerGate(props: { children: (url: Accessor<string>) => JSX.Element }) { + const [serverUrl] = createResource<string>(() => invoke("ensure_server_ready")) return ( // Not using suspense as not all components are compatible with it (undefined refs) <Show - when={status.state !== "pending"} + when={serverUrl.state !== "pending" && serverUrl()} fallback={ <div class="h-screen w-screen flex flex-col items-center justify-center bg-background-base"> <Logo class="w-xl opacity-12 animate-pulse" /> - <div class="mt-8 text-14-regular text-text-weak">Starting server...</div> + <div class="mt-8 text-14-regular text-text-weak">Initializing...</div> </div> } > - {/* Trigger error boundary without rendering the returned value */} - {(status(), null)} - {props.children} + {serverUrl => props.children(serverUrl)} </Show> ) } |
