Skip to content

[ui][bug] SelectionAsk 页保存动作无 saving/saved/error 反馈 — 失败用户无感 #315

@appergb

Description

@appergb

现象

openless-all/app/src/pages/SelectionAsk.tsx 两个写操作都没有失败反馈,与 Translation 页同款问题:

用户动作 UI 调用
切 QA 触发热键开关 SelectionAsk.tsx:62-69 CardHeaderToggle await setQaHotkey(nextHotkey); await savePrefs({ ...prefs, qaHotkey: nextHotkey });
录新的 QA 热键 SelectionAsk.tsx:74-80 ShortcutRecorder await setQaHotkey(binding); await savePrefs({ ...prefs, qaHotkey: binding });
切"保存 Q&A 历史" SelectionAsk.tsx:86-90 CardHeaderToggle SelectionAsk.tsx:40-41 savePrefs({ ...prefs, qaSaveHistory })

完整链路(UI → IPC → Rust handler)

调用 IPC 包装 Rust handler
setQaHotkey(binding) src/lib/ipc.ts:311invokeOrMock('set_qa_hotkey', { binding }, …) commands.rs:784 set_qa_hotkey(…)
savePrefs(...) queueSetSettingssetSettings src/lib/ipc.ts:142invokeOrMock('set_settings', { prefs }, …) commands.rs:116 set_settings(…)

失败路径

  • set_qa_hotkey 失败(如热键被系统/其它进程占用,handler 返回 Err(String))→ 第一个 await reject → 第二个 savePrefs 不会执行 → 本地 state 未更新但 toggle 视觉已经按下
  • savePrefs 单独失败 → 同 Translation 页:fire-and-forget,promise rejection 进 unhandled
  • 全程无 saving/saved/error UI

用户可见后果

  1. 启用 QA → 看起来开了,下次按热键无反应(hotkey 注册失败但 UI 显示"已启用")
  2. 改 QA 热键 → 表面切了,实际 set_qa_hotkey reject、savePrefs 没跑、旧热键还在
  3. 切"保存 Q&A 历史" → toggle 状态未与磁盘同步,重启可能漂移

建议接受标准

  • 三个保存路径加 try/catch + saving/saved/failed 状态
  • setQaHotkey reject 时回滚 toggle 视觉 + 显式提示"热键注册失败",不再继续调 savePrefs
  • 与 Translation 页修法保持一致风格

不在范围

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions