Skip to content

fix(overview): ASR 状态在凭据保存后未刷新仍显示「未配置」#538

Merged
H-Chris233 merged 1 commit into
Open-Less:mainfrom
H-Chris233:fix/overview-asr-status-532
May 27, 2026
Merged

fix(overview): ASR 状态在凭据保存后未刷新仍显示「未配置」#538
H-Chris233 merged 1 commit into
Open-Less:mainfrom
H-Chris233:fix/overview-asr-status-532

Conversation

@H-Chris233
Copy link
Copy Markdown
Collaborator

@H-Chris233 H-Chris233 commented May 27, 2026

User description

修复 issue #532 — 概览页 ASR 语音状态在 Settings 中保存凭据后仍显示「未配置」。

根因: Overview 页的 refreshCredentials() 只在 prefs?.activeAsrProvider 变化时触发。当用户在 Settings 中填写/更新 ASR 凭据(如 volcengine 的 APP ID、Access Token、Resource ID)但不切换提供商时,该依赖不变,凭据状态不会被重新拉取。

修复:

  1. Rust set_credential 命令保存凭据后 emit credentials:changed Tauri 事件
  2. Overview 新增 useEffect 监听该事件,收到后调用 refreshCredentials()

Test plan:

  • 在 Settings → 服务 中配置 volcengine ASR(填写 APP ID、Access Token、Resource ID),保存后切回 Overview,验证「ASR 语音」卡片显示「已配置」
  • 在 Settings 中切换 ASR 提供商(如切换到 siliconflow),验证 Overview 状态正确更新
  • 在 Settings 中清空凭据,验证 Overview 状态变为「未配置」
  • 验证 LLM 配置状态不受影响

PR Type

Bug fix


Description

  • Refresh ASR status after credential saves

  • Emit credentials:changed from backend

  • Listen for credential updates on Overview

  • Keep LLM status behavior unchanged


Diagram Walkthrough

flowchart LR
  A["set_credential saves credentials"] -- "emit `credentials:changed`" --> B["Overview listens for credential updates"]
  B -- "call `getCredentials()`" --> C["Refresh ASR configured status"]
Loading

File Walkthrough

Relevant files
Bug fix
commands.rs
Emit credential change event after save                                   

openless-all/app/src-tauri/src/commands.rs

  • Returns Ok(()) after credential writes complete.
  • Emits credentials:changed on every save or removal.
  • Notifies the frontend that credential state changed.
  • Supports Overview refresh without provider switching.
+5/-2     
Overview.tsx
Listen for credential updates in Overview                               

openless-all/app/src/pages/Overview.tsx

  • Adds a Tauri event listener for credentials:changed.
  • Re-fetches credentials when the event is received.
  • Updates credential status and clears errors after refresh.
  • Cleans up the listener on unmount.
+36/-0   

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 27, 2026

PR Reviewer Guide 🔍

(Review updated until commit 93555d5)

Here are some key observations to aid the review process:

🎫 Ticket compliance analysis 🔶

532 - Partially compliant

Compliant requirements:

  • 保存凭据后触发概览页重新拉取凭据状态。
  • 未修改 LLM 状态展示逻辑。

Non-compliant requirements:

  • 无法仅从代码静态确认概览页显示一定与后端 asr_configured 的最终判定和实际转写可用性完全一致。

Requires further human verification:

  • 需要在实际应用中验证:保存 ASR 凭据后,概览页是否立即更新为「已配置」。
  • 需要在实际应用中验证:切换不同 ASR 供应商、清空凭据后,概览页状态是否正确刷新。
  • 需要在实际应用中验证:LLM 卡片展示未被回归影响。
⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
🧪 No relevant tests
🔒 No security concerns identified
⚡ No major issues detected

在 Settings 中填写/更新 ASR 凭据(如 volcengine 的 APP ID、Access Token)
但不切换提供商时,Overview 页的 useEffect 因 prefs?.activeAsrProvider 不变
不会重跑 refreshCredentials(),导致状态卡在「未配置」。

修复:set_credential 后端命令保存凭据后 emit credentials:changed 事件,
Overview 监听该事件刷新凭据状态。
@github-actions
Copy link
Copy Markdown

Persistent review updated to latest commit 93555d5

@H-Chris233 H-Chris233 merged commit 9c74e6d into Open-Less:main May 27, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant