Skip to content

Fix/routing cancel confirm behavior#9133

Merged
2dust merged 1 commit into2dust:masterfrom
Obs-Mango:fix/routing-cancel-confirm-behavior
Apr 19, 2026
Merged

Fix/routing cancel confirm behavior#9133
2dust merged 1 commit into2dust:masterfrom
Obs-Mango:fix/routing-cancel-confirm-behavior

Conversation

@Obs-Mango
Copy link
Copy Markdown
Contributor

之前所有的路由操作(添加/删除/设为默认)都会直接写入 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(检查)一下。

@Obs-Mango Obs-Mango force-pushed the fix/routing-cancel-confirm-behavior branch from 75ae588 to ad2a1e0 Compare April 17, 2026 16:00
@2dust
Copy link
Copy Markdown
Owner

2dust commented Apr 18, 2026

感谢 PR。
但是你把问题搞复杂了。
更好的是直接把保存和取消按钮去掉,类似订阅分组;表示这个列表是在编辑的时候就保存的了。
上面的两个编辑框,修改后直接保存即可

@2dust 2dust closed this Apr 18, 2026
@Obs-Mango
Copy link
Copy Markdown
Contributor Author

我正在改代码,刚准备 force push 呢,结果您就给关了 🥲

@2dust 2dust reopened this Apr 18, 2026
@Obs-Mango Obs-Mango force-pushed the fix/routing-cancel-confirm-behavior branch from ad2a1e0 to 429d4fb Compare April 18, 2026 11:33
@Obs-Mango
Copy link
Copy Markdown
Contributor Author

稍等一下,我正在进行测试并剪辑演示视频。

@Obs-Mango
Copy link
Copy Markdown
Contributor Author

简化了交互逻辑,使其与订阅分组的行为保持一致:

完全移除了“确认”和“取消”按钮

所有路由操作(添加/删除/设为默认)都会立即保存到数据库中

顶部的 DomainStrategy 等下拉框在修改后会自动保存

界面现在直接通过右上角的 X 按钮关闭

现在的行为与订阅分组的编辑逻辑完全相同——所有的修改在编辑时即刻保存,不再需要确认或取消。


2026-04-18.13-46-58.mp4

@2dust
Copy link
Copy Markdown
Owner

2dust commented Apr 18, 2026

请问你是什么开发工具?有经过调试测试吗?
添加了新的路由规则后路由没有刷新且没有重启服务了。

@Obs-Mango
Copy link
Copy Markdown
Contributor Author

非常抱歉,您说得完全对。我之前的注意力都放在了 UI 交互和数据库写入的修改上,漏掉了保存后通知主界面刷新路由和重启服务的逻辑。这是我的疏忽,没有测试完整的工作流!我现在正在查阅代码,看看如何正确触发这个刷新事件。这次修改后我一定会仔细调试和测试,然后再更新 PR。

@Obs-Mango Obs-Mango force-pushed the fix/routing-cancel-confirm-behavior branch from 429d4fb to eed35a1 Compare April 18, 2026 12:28
@2dust
Copy link
Copy Markdown
Owner

2dust commented Apr 18, 2026

应该要设置一个标志,任何改动后,关闭窗口都要触发变更事件。
实话说,你发现的这个问题并不需要处理,问题不严重

@Obs-Mango Obs-Mango force-pushed the fix/routing-cancel-confirm-behavior branch from eed35a1 to c7204c3 Compare April 18, 2026 12:50
@Obs-Mango
Copy link
Copy Markdown
Contributor Author

另外提一个非 bug 的小细节:在 RoutingRuleSettingViewModel 第 235 行,_updateView?.Invoke(CloseWindow) 没有加 await。虽然因为 Close(true) 是同步的,目前没什么实质影响,但理论上可能会吞掉潜在的异常。

@Obs-Mango Obs-Mango force-pushed the fix/routing-cancel-confirm-behavior branch from c7204c3 to 4e262a8 Compare April 18, 2026 13:26
@Obs-Mango Obs-Mango force-pushed the fix/routing-cancel-confirm-behavior branch from 4e262a8 to 1f63d57 Compare April 18, 2026 13:29
@Obs-Mango
Copy link
Copy Markdown
Contributor Author

Obs-Mango commented Apr 18, 2026

逻辑和 Bug 等问题我这边应该都已经检查过了,但为了保险起见,还是麻烦您再 review(复核)一下。

修改内容 (Changes):

移除了路由设置界面的“保存”和“取消”按钮

所有的列表操作(添加/编辑/删除/设为默认/导入规则)都会立即保存到数据库中

DomainStrategy 等下拉选项在修改后会自动保存

界面直接通过右上角的 X 按钮关闭;如果进行了任何修改,关闭时会自动重启服务

测试情况 (Tested):

添加/编辑/删除路由规则可以立即保存,并在关闭窗口时正确刷新

DomainStrategy 的修改在重新打开窗口后依然保留(持久化正常)

修改配置后,服务可以正确触发重启

如果仅打开窗口再关闭,而没有进行任何修改,则不会触发多余的重启

@2dust 2dust merged commit b604a5b into 2dust:master Apr 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants