Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions openless-all/app/src-tauri/src/commands.rs
Original file line number Diff line number Diff line change
Expand Up @@ -783,10 +783,15 @@ pub fn set_credential(window: Window, account: String, value: String) -> Result<
ensure_main_window(&window)?;
let acc = parse_account(&account)?;
if value.is_empty() {
CredentialsVault::remove(acc).map_err(|e| e.to_string())
CredentialsVault::remove(acc).map_err(|e| e.to_string())?;
} else {
CredentialsVault::set(acc, &value).map_err(|e| e.to_string())
CredentialsVault::set(acc, &value).map_err(|e| e.to_string())?;
}
// 通知前端凭据已变更(如 Overview 页需要刷新 asrConfigured 状态)。
// issue #532 / #573:在 Settings 填写凭据但不切换提供商时,Overview 不会重拉状态,
// 仍显示「未配置」。该修复曾随 #538 合入 main,但被 beta→main 合并覆盖,beta 上缺失。
let _ = window.emit("credentials:changed", ());
Ok(())
}

#[tauri::command]
Expand Down
28 changes: 28 additions & 0 deletions openless-all/app/src/pages/Overview.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,34 @@ export function Overview({ onOpenHistory }: OverviewProps) {
refreshCredentials();
}, [refreshCredentials, prefs?.activeAsrProvider, prefs?.activeLlmProvider]);

// 凭据被保存后重新拉取状态(issue #532 / #573:在 Settings 中填写/更新凭据
// 但不切换提供商时,上面的 useEffect 不会重跑,导致概览页的状态仍停留在「未配置」)。
// 复用 refreshCredentials() 以带上 credentialsRequestSeq 防竞态。
useEffect(() => {
let cancelled = false;
let unlisten: (() => void) | undefined;
(async () => {
try {
const { listen } = await import('@tauri-apps/api/event');
const handle = await listen('credentials:changed', () => {
if (cancelled) return;
refreshCredentials();
});
if (cancelled) {
handle();
} else {
unlisten = handle;
}
} catch {
// browser dev mock — 没有 Tauri event bridge
}
})();
return () => {
cancelled = true;
unlisten?.();
};
}, [refreshCredentials]);

const metrics = useMemo(() => {
const today = new Date();
today.setHours(0, 0, 0, 0);
Expand Down
Loading