fix(m204): Java 组写盘成功后请 host 重发设置快照
`pages/settings/java/store.rs` 的 `save()` / `set_selected()` / `prefs_store::save()` 是页面自己的一次同步原子落盘(`SettingStore::set` 多个键 + 一次 `save()`), 不经过 `AppCommand::SetSetting` 的写盘分支;而 `CoreEvent::SettingsChanged` 全仓只有 `dispatch.rs` 的 `SetSetting` 分支与 `host/mod.rs::refresh_all` 两处发出。 于是三键写成功之后,`AppState::settings_groups` 里 java 组那几行会停在旧值, 直到下一次任何别的写入顺手带一份新快照回来。 修法用一条**动作键**(`dto::JAVA_REFRESH_ACTION` = `java.action.refresh`, 与 `download.action.detect_region` 同一族:不写盘、见到就返回 Ok): 写盘成功后派发它,`SetSetting` 分支照常重发快照。 不用 `RefreshAll`:那个除重发快照之外还会 `versions::spawn_list` 与 `start_update_check`——每点一次「保存内存」打两个网络请求(实测:一次真 host 出图 就在数据根里落了 `cache/meta/version_manifest_v2.json`),代价与动作不相称。 另外给 D30 §2.1 补一行自证身份的日志:`--screenshot` 且身份变化时打 `[shot] settings route=… group=… theme=…`(`view` 每帧都跑,所以只在变化时落一行), 免得再出现「拿外观页当下载组证据」那种图与结论对不上的事故。 守卫(`tests/java_refresh.rs`,4 条): - 真 `CoreHost` + 临时数据根跑完整链:写盘 ⇒ 快照里 `java.extra_args` 真的变了; - 被拒的保存不许请求刷新; - 成功之后确实派发了那条动作键(键名写错就红); - 「立即扫描」在 App 层真的接线(此前没有任何用例驱动 `Message::Scan`)。
This commit is contained in:
1 parent
a48d055118
commit
92ab3d4ddf
8 files changed
+436
-1
No files matched your search
@@ -67,7 +67,9 @@ pub use pack::{
|
||||
ImportState, ImportStatusView, ImportedFileView, MissingFileView, MissingReasonView,
|
||||
PackCommand, PackEvent, PackFormatView, PackState, ProbeView,
|
||||
};
|
||||
pub use settings::{find_row, SettingControl, SettingGroupView, SettingRowView};
|
||||
pub use settings::{
|
||||
find_row, SettingControl, SettingGroupView, SettingRowView, JAVA_REFRESH_ACTION,
|
||||
};
|
||||
// M159: 自更新
|
||||
pub use update::{
|
||||
ReadyUpdate, UpdateBanner, UpdateCandidateView, UpdateFailureView, UpdateOutcome, UpdateView,
|
||||
|
||||
Reference in new issue
Block a user