Fix/routing cancel confirm behavior#9133
Conversation
75ae588 to
ad2a1e0
Compare
|
感谢 PR。 |
|
我正在改代码,刚准备 force push 呢,结果您就给关了 🥲 |
ad2a1e0 to
429d4fb
Compare
|
稍等一下,我正在进行测试并剪辑演示视频。 |
|
简化了交互逻辑,使其与订阅分组的行为保持一致: 完全移除了“确认”和“取消”按钮 所有路由操作(添加/删除/设为默认)都会立即保存到数据库中 顶部的 DomainStrategy 等下拉框在修改后会自动保存 界面现在直接通过右上角的 X 按钮关闭 现在的行为与订阅分组的编辑逻辑完全相同——所有的修改在编辑时即刻保存,不再需要确认或取消。 2026-04-18.13-46-58.mp4 |
|
请问你是什么开发工具?有经过调试测试吗? |
|
非常抱歉,您说得完全对。我之前的注意力都放在了 UI 交互和数据库写入的修改上,漏掉了保存后通知主界面刷新路由和重启服务的逻辑。这是我的疏忽,没有测试完整的工作流!我现在正在查阅代码,看看如何正确触发这个刷新事件。这次修改后我一定会仔细调试和测试,然后再更新 PR。 |
429d4fb to
eed35a1
Compare
|
应该要设置一个标志,任何改动后,关闭窗口都要触发变更事件。 |
eed35a1 to
c7204c3
Compare
|
另外提一个非 bug 的小细节:在 RoutingRuleSettingViewModel 第 235 行,_updateView?.Invoke(CloseWindow) 没有加 await。虽然因为 Close(true) 是同步的,目前没什么实质影响,但理论上可能会吞掉潜在的异常。 |
c7204c3 to
4e262a8
Compare
4e262a8 to
1f63d57
Compare
|
逻辑和 Bug 等问题我这边应该都已经检查过了,但为了保险起见,还是麻烦您再 review(复核)一下。 修改内容 (Changes): 移除了路由设置界面的“保存”和“取消”按钮 所有的列表操作(添加/编辑/删除/设为默认/导入规则)都会立即保存到数据库中 DomainStrategy 等下拉选项在修改后会自动保存 界面直接通过右上角的 X 按钮关闭;如果进行了任何修改,关闭时会自动重启服务 测试情况 (Tested): 添加/编辑/删除路由规则可以立即保存,并在关闭窗口时正确刷新 DomainStrategy 的修改在重新打开窗口后依然保留(持久化正常) 修改配置后,服务可以正确触发重启 如果仅打开窗口再关闭,而没有进行任何修改,则不会触发多余的重启 |
之前所有的路由操作(添加/删除/设为默认)都会直接写入 SQLite 数据库,这导致“取消”和“确认”的作用变得完全一样。而且两者都会返回 DialogResult=true。
现在改为使用内存工作副本(in-memory working copy)模式:
打开界面时:将所有路由项从数据库深拷贝(deep-copy)到内存中
编辑操作:所有的修改都仅在内存中进行
确认(Confirm):将工作副本提交并保存到数据库
取消(Cancel)/ 关闭(X)按钮:丢弃工作副本,完全不会修改数据库
异常断电安全:数据库中的原始路由表始终保持完好无损
Before
2026-04-15.14-27-50.mp4
After
2026-04-17.14-40-37.mp4
我在本地已经测试过了,不过还是麻烦您再 review(检查)一下。