diff options
Diffstat (limited to 'packages/desktop/src')
| -rw-r--r-- | packages/desktop/src/index.tsx | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/packages/desktop/src/index.tsx b/packages/desktop/src/index.tsx index f05a28e14..e554f8da0 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 { createSignal, Show, Accessor, JSX, createResource } from "solid-js" +import { createSignal, Show, Accessor, JSX, createResource, onMount, onCleanup } from "solid-js" import { UPDATER_ENABLED } from "./updater" import { createMenu } from "./menu" @@ -30,6 +30,11 @@ let update: Update | null = null const createPlatform = (password: Accessor<string | null>): Platform => ({ platform: "desktop", + os: (() => { + const type = ostype() + if (type === "macos" || type === "windows" || type === "linux") return type + return undefined + })(), version: pkg.version, async openDirectoryPickerDialog(opts) { @@ -292,19 +297,25 @@ root?.addEventListener("mousewheel", (e) => { e.stopPropagation() }) -// Handle external links - open in system browser instead of webview -document.addEventListener("click", (e) => { - const link = (e.target as HTMLElement).closest("a.external-link") as HTMLAnchorElement | null - if (link?.href) { - e.preventDefault() - platform.openLink(link.href) - } -}) - render(() => { const [serverPassword, setServerPassword] = createSignal<string | null>(null) const platform = createPlatform(() => serverPassword()) + function handleClick(e: MouseEvent) { + const link = (e.target as HTMLElement).closest("a.external-link") as HTMLAnchorElement | null + if (link?.href) { + e.preventDefault() + platform.openLink(link.href) + } + } + + onMount(() => { + document.addEventListener("click", handleClick) + onCleanup(() => { + document.removeEventListener("click", handleClick) + }) + }) + return ( <PlatformProvider value={platform}> <AppBaseProviders> |
