diff options
| author | Brendan Allan <[email protected]> | 2026-02-12 17:44:06 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-02-12 09:44:06 +0000 |
| commit | 1413d77b1ff36ed030c179b3bc59dc6a9b9679b3 (patch) | |
| tree | 9d9d59cd34d1bc4a1c091200cdbad841123ec327 /packages/desktop/src | |
| parent | 624dd94b5dd8dca03aa3b246312f8b54fd3331f1 (diff) | |
| download | opencode-1413d77b1ff36ed030c179b3bc59dc6a9b9679b3.tar.gz opencode-1413d77b1ff36ed030c179b3bc59dc6a9b9679b3.zip | |
desktop: sqlite migration progress bar (#13294)
Diffstat (limited to 'packages/desktop/src')
| -rw-r--r-- | packages/desktop/src/bindings.ts | 3 | ||||
| -rw-r--r-- | packages/desktop/src/loading.tsx | 18 |
2 files changed, 19 insertions, 2 deletions
diff --git a/packages/desktop/src/bindings.ts b/packages/desktop/src/bindings.ts index 3d588a171..67816ad41 100644 --- a/packages/desktop/src/bindings.ts +++ b/packages/desktop/src/bindings.ts @@ -23,6 +23,7 @@ export const commands = { /** Events */ export const events = { loadingWindowComplete: makeEvent<LoadingWindowComplete>("loading-window-complete"), + sqliteMigrationProgress: makeEvent<SqliteMigrationProgress>("sqlite-migration-progress"), }; /* Types */ @@ -37,6 +38,8 @@ export type ServerReadyData = { password: string | null, }; +export type SqliteMigrationProgress = { type: "InProgress"; value: number } | { type: "Done" }; + export type WslConfig = { enabled: boolean, }; diff --git a/packages/desktop/src/loading.tsx b/packages/desktop/src/loading.tsx index 752cde893..a1d537a00 100644 --- a/packages/desktop/src/loading.tsx +++ b/packages/desktop/src/loading.tsx @@ -4,7 +4,7 @@ import "@opencode-ai/app/index.css" import { Font } from "@opencode-ai/ui/font" import { Splash } from "@opencode-ai/ui/logo" import "./styles.css" -import { createSignal, Match, onMount } from "solid-js" +import { createSignal, Match, onCleanup, onMount } from "solid-js" import { commands, events, InitStep } from "./bindings" import { Channel } from "@tauri-apps/api/core" import { Switch } from "solid-js" @@ -57,15 +57,29 @@ render(() => { "This could take a couple of minutes", ] const [textIndex, setTextIndex] = createSignal(0) + const [progress, setProgress] = createSignal(0) onMount(async () => { + const listener = events.sqliteMigrationProgress.listen((e) => { + if (e.payload.type === "InProgress") setProgress(e.payload.value) + }) + onCleanup(() => listener.then((c) => c())) + await new Promise((res) => setTimeout(res, 3000)) setTextIndex(1) await new Promise((res) => setTimeout(res, 6000)) setTextIndex(2) }) - return <>{textItems[textIndex()]}</> + return ( + <div class="flex flex-col items-center gap-1"> + <span>{textItems[textIndex()]}</span> + <span>Progress: {progress()}%</span> + <div class="h-2 w-48 rounded-full border border-white relative"> + <div class="bg-[#fff] h-full absolute left-0 inset-y-0" style={{ width: `${progress()}%` }} /> + </div> + </div> + ) }} </Match> </Switch> |
