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 @@ - -