From b604a5b78763f8f409274d23005aba7ed9f7af6e Mon Sep 17 00:00:00 2001 From: Mangoo Date: Sun, 19 Apr 2026 08:25:53 +0200 Subject: [PATCH] fix: remove Save/Cancel from routing settings, save edits immediately (#9133) --- .../ViewModels/RoutingSettingViewModel.cs | 34 +++++++-------- .../Views/RoutingSettingWindow.axaml | 18 -------- .../Views/RoutingSettingWindow.axaml.cs | 42 +++++++------------ v2rayN/v2rayN/Views/RoutingSettingWindow.xaml | 20 --------- .../v2rayN/Views/RoutingSettingWindow.xaml.cs | 20 +-------- 5 files changed, 33 insertions(+), 101 deletions(-) diff --git a/v2rayN/ServiceLib/ViewModels/RoutingSettingViewModel.cs b/v2rayN/ServiceLib/ViewModels/RoutingSettingViewModel.cs index 8f62f2d0..2075bb1e 100644 --- a/v2rayN/ServiceLib/ViewModels/RoutingSettingViewModel.cs +++ b/v2rayN/ServiceLib/ViewModels/RoutingSettingViewModel.cs @@ -22,7 +22,6 @@ public class RoutingSettingViewModel : MyReactiveObject public ReactiveCommand RoutingAdvancedSetDefaultCmd { get; } public ReactiveCommand RoutingAdvancedImportRulesCmd { get; } - public ReactiveCommand SaveCmd { get; } public bool IsModified { get; set; } #endregion Reactive @@ -53,12 +52,19 @@ public class RoutingSettingViewModel : MyReactiveObject await RoutingAdvancedImportRules(); }); - SaveCmd = ReactiveCommand.CreateFromTask(async () => - { - await SaveRoutingAsync(); - }); - _ = Init(); + + // Auto-save DomainStrategy when changed + this.WhenAnyValue( + x => x.DomainStrategy, + x => x.DomainStrategy4Singbox) + .Skip(1) + .DistinctUntilChanged() + .Subscribe(x => + { + IsModified = true; + _ = SaveSettingsAsync(); + }); } private async Task Init() @@ -96,20 +102,14 @@ public class RoutingSettingViewModel : MyReactiveObject } } - private async Task SaveRoutingAsync() + /// + /// Save DomainStrategy settings + /// + public async Task SaveSettingsAsync() { _config.RoutingBasicItem.DomainStrategy = DomainStrategy; _config.RoutingBasicItem.DomainStrategy4Singbox = DomainStrategy4Singbox; - - if (await ConfigHandler.SaveConfig(_config) == 0) - { - NoticeManager.Instance.Enqueue(ResUI.OperationSuccess); - _updateView?.Invoke(EViewAction.CloseWindow, null); - } - else - { - NoticeManager.Instance.Enqueue(ResUI.OperationFailed); - } + await ConfigHandler.SaveConfig(_config); } #endregion Refresh Save diff --git a/v2rayN/v2rayN.Desktop/Views/RoutingSettingWindow.axaml b/v2rayN/v2rayN.Desktop/Views/RoutingSettingWindow.axaml index a9155f7d..1eb4d5b9 100644 --- a/v2rayN/v2rayN.Desktop/Views/RoutingSettingWindow.axaml +++ b/v2rayN/v2rayN.Desktop/Views/RoutingSettingWindow.axaml @@ -20,24 +20,6 @@ - -