Merge pull request #590 from Open-Less/fix/issue-573-overview-credentials-refresh
fix(overview): 凭据保存后状态不刷新仍显示「未配置」 (#573)
This commit is contained in:
2 files changed
+35
-2
No files matched your search
@@ -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]
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in new issue
Block a user