From 4a9a4cec1739007936d434a6a51180158e25078b Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Wed, 24 Jun 2026 02:17:08 +0800
Subject: [PATCH] Fix missing model language switch flow
---
privatevoice.src/frontend/src/App.svelte | 24 +++++++++++++++++++++---
1 files changed, 21 insertions(+), 3 deletions(-)
diff --git a/privatevoice.src/frontend/src/App.svelte b/privatevoice.src/frontend/src/App.svelte
index 407dd7e..8406d60 100755
--- a/privatevoice.src/frontend/src/App.svelte
+++ b/privatevoice.src/frontend/src/App.svelte
@@ -16,6 +16,7 @@
let isIndicatorRoute = $state(window.location.hash === '#/indicator')
let showUpdateDialog = $state(false)
let languageReady = $state(false)
+ let showOnboarding = $state(false)
onMount(() => {
Call.ByName('voicesnap/services.ConfigService.GetLanguageSettings').then((settings: any) => {
@@ -53,6 +54,9 @@
const data = ev?.data
if (data?.status) {
engineStatus.set(data.status as any)
+ if (data.status === 'ready') {
+ showOnboarding = false
+ }
}
if (data?.hardwareInfo) {
engineHardwareInfo.set(data.hardwareInfo)
@@ -79,6 +83,9 @@
Call.ByName('voicesnap/services.EngineService.GetStatus').then((data: any) => {
if (data?.status) {
engineStatus.set(data.status as any)
+ if (data.status === 'ready') {
+ showOnboarding = false
+ }
}
if (data?.hardwareInfo) {
engineHardwareInfo.set(data.hardwareInfo)
@@ -112,13 +119,24 @@
try {
const current: any = await Call.ByName('voicesnap/services.EngineService.GetCurrentModelStatus')
if (!current?.installed) {
- engineStatus.set('need_model')
+ const hasAnyInstalled: any = await Call.ByName('voicesnap/services.EngineService.HasAnyInstalledModel')
+ showOnboarding = !hasAnyInstalled
+ if (!hasAnyInstalled) {
+ engineStatus.set('need_model')
+ }
+ } else {
+ showOnboarding = false
}
} catch {
try {
const exists: any = await Call.ByName('voicesnap/services.EngineService.ModelExists')
if (!exists) {
- engineStatus.set('need_model')
+ const hasAnyInstalled: any = await Call.ByName('voicesnap/services.EngineService.HasAnyInstalledModel')
+ .catch(() => false)
+ showOnboarding = !hasAnyInstalled
+ if (!hasAnyInstalled) {
+ engineStatus.set('need_model')
+ }
}
} catch {}
}
@@ -130,7 +148,7 @@
{:else}
{#if languageReady}
{#key $localeRevision}
- {#if $engineStatus === 'need_model'}
+ {#if showOnboarding && $engineStatus === 'need_model'}
<OnboardingView />
{:else}
<SettingsWindow />
--
Gitblit v1.9.3