summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--packages/desktop/src-tauri/src/lib.rs2
-rw-r--r--packages/desktop/src/loading.tsx30
2 files changed, 9 insertions, 23 deletions
diff --git a/packages/desktop/src-tauri/src/lib.rs b/packages/desktop/src-tauri/src/lib.rs
index fe71ef029..85ea21d38 100644
--- a/packages/desktop/src-tauri/src/lib.rs
+++ b/packages/desktop/src-tauri/src/lib.rs
@@ -665,6 +665,8 @@ async fn initialize(app: AppHandle) {
}
let _ = server_ready_rx.await;
+
+ tracing::info!("Loading task finished");
}
})
.map_err(|_| ())
diff --git a/packages/desktop/src/loading.tsx b/packages/desktop/src/loading.tsx
index ee2982722..23a8055c9 100644
--- a/packages/desktop/src/loading.tsx
+++ b/packages/desktop/src/loading.tsx
@@ -5,7 +5,7 @@ import { Font } from "@opencode-ai/ui/font"
import { Splash } from "@opencode-ai/ui/logo"
import { Progress } from "@opencode-ai/ui/progress"
import "./styles.css"
-import { createEffect, createMemo, createSignal, onCleanup } from "solid-js"
+import { createEffect, createMemo, createSignal, onCleanup, onMount } from "solid-js"
import { commands, events, InitStep } from "./bindings"
import { Channel } from "@tauri-apps/api/core"
@@ -29,36 +29,20 @@ render(() => {
channel.onmessage = (next) => setStep(next)
commands.awaitInitialization(channel as any).catch(() => undefined)
- createEffect(() => {
- if (phase() !== "sqlite_waiting") return
-
+ onMount(() => {
setLine(0)
setPercent(0)
const timers = delays.map((ms, i) => setTimeout(() => setLine(i + 1), ms))
- let stop: (() => void) | undefined
- let active = true
-
- void events.sqliteMigrationProgress
- .listen((e) => {
- if (e.payload.type === "InProgress") setPercent(Math.max(0, Math.min(100, e.payload.value)))
- if (e.payload.type === "Done") setPercent(100)
- })
- .then((unlisten) => {
- if (active) {
- stop = unlisten
- return
- }
-
- unlisten()
- })
- .catch(() => undefined)
+ const listener = events.sqliteMigrationProgress.listen((e) => {
+ if (e.payload.type === "InProgress") setPercent(Math.max(0, Math.min(100, e.payload.value)))
+ if (e.payload.type === "Done") setPercent(100)
+ })
onCleanup(() => {
- active = false
+ listener.then((cb) => cb())
timers.forEach(clearTimeout)
- stop?.()
})
})