From e6011cfede8101adaa46e08f4d25e7865d40fd07 Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Fri, 7 Mar 2025 12:11:19 +0800 Subject: [PATCH] AI-optimized code --- v2rayN/ServiceLib/Handler/ClashApiHandler.cs | 24 ++---- .../CoreConfig/CoreConfigV2rayService.cs | 2 +- .../ViewModels/CheckUpdateViewModel.cs | 8 ++ .../ViewModels/ClashConnectionsViewModel.cs | 2 +- .../ViewModels/ClashProxiesViewModel.cs | 73 ++++++++----------- .../Views/ClashProxiesView.axaml.cs | 4 +- v2rayN/v2rayN/Views/ClashProxiesView.xaml.cs | 4 +- 7 files changed, 54 insertions(+), 63 deletions(-) diff --git a/v2rayN/ServiceLib/Handler/ClashApiHandler.cs b/v2rayN/ServiceLib/Handler/ClashApiHandler.cs index d61709ed..253bf1fa 100644 --- a/v2rayN/ServiceLib/Handler/ClashApiHandler.cs +++ b/v2rayN/ServiceLib/Handler/ClashApiHandler.cs @@ -11,9 +11,9 @@ namespace ServiceLib.Handler private Dictionary? _proxies; public Dictionary ProfileContent { get; set; } - public async Task?> GetClashProxiesAsync(Config config) + public async Task?> GetClashProxiesAsync() { - for (var i = 0; i < 5; i++) + for (var i = 0; i < 3; i++) { var url = $"{GetApiUrl()}/proxies"; var result = await HttpClientHelper.Instance.TryGetAsync(url); @@ -41,34 +41,26 @@ namespace ServiceLib.Handler { if (blAll) { - for (var i = 0; i < 5; i++) - { - if (_proxies != null) - { - break; - } - await Task.Delay(5000); - } if (_proxies == null) { - return; + await GetClashProxiesAsync(); } lstProxy = new List(); - foreach (var kv in _proxies) + foreach (var kv in _proxies ?? []) { - if (Global.notAllowTestType.Contains(kv.Value.type.ToLower())) + if (Global.notAllowTestType.Contains(kv.Value.type?.ToLower())) { continue; } lstProxy.Add(new ClashProxyModel() { Name = kv.Value.name, - Type = kv.Value.type.ToLower(), + Type = kv.Value.type?.ToLower(), }); } } - if (lstProxy == null) + if (lstProxy is not { Count: > 0 }) { return; } @@ -157,7 +149,7 @@ namespace ServiceLib.Handler } } - public async Task GetClashConnectionsAsync(Config config) + public async Task GetClashConnectionsAsync() { try { diff --git a/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigV2rayService.cs b/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigV2rayService.cs index 5c23ca19..56fefd89 100644 --- a/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigV2rayService.cs +++ b/v2rayN/ServiceLib/Services/CoreConfig/CoreConfigV2rayService.cs @@ -582,7 +582,7 @@ namespace ServiceLib.Services.CoreConfig var it = JsonUtils.DeepCopy(rule); it.ip = null; it.type = "field"; - for (int k = it.domain.Count - 1; k >= 0; k--) + for (var k = it.domain.Count - 1; k >= 0; k--) { if (it.domain[k].StartsWith("#")) { diff --git a/v2rayN/ServiceLib/ViewModels/CheckUpdateViewModel.cs b/v2rayN/ServiceLib/ViewModels/CheckUpdateViewModel.cs index 121102df..0640d437 100644 --- a/v2rayN/ServiceLib/ViewModels/CheckUpdateViewModel.cs +++ b/v2rayN/ServiceLib/ViewModels/CheckUpdateViewModel.cs @@ -74,6 +74,14 @@ namespace ServiceLib.ViewModels } private async Task CheckUpdate() + { + await Task.Run(async () => + { + await CheckUpdateTask(); + }); + } + + private async Task CheckUpdateTask() { _lstUpdated.Clear(); _lstUpdated = _checkUpdateModel.Where(x => x.IsSelected == true) diff --git a/v2rayN/ServiceLib/ViewModels/ClashConnectionsViewModel.cs b/v2rayN/ServiceLib/ViewModels/ClashConnectionsViewModel.cs index 03b21524..e5b5585f 100644 --- a/v2rayN/ServiceLib/ViewModels/ClashConnectionsViewModel.cs +++ b/v2rayN/ServiceLib/ViewModels/ClashConnectionsViewModel.cs @@ -58,7 +58,7 @@ namespace ServiceLib.ViewModels private async Task GetClashConnections() { - var ret = await ClashApiHandler.Instance.GetClashConnectionsAsync(_config); + var ret = await ClashApiHandler.Instance.GetClashConnectionsAsync(); if (ret == null) { return; diff --git a/v2rayN/ServiceLib/ViewModels/ClashProxiesViewModel.cs b/v2rayN/ServiceLib/ViewModels/ClashProxiesViewModel.cs index 0a5bc8dd..f1011f26 100644 --- a/v2rayN/ServiceLib/ViewModels/ClashProxiesViewModel.cs +++ b/v2rayN/ServiceLib/ViewModels/ClashProxiesViewModel.cs @@ -13,7 +13,7 @@ namespace ServiceLib.ViewModels { private Dictionary? _proxies; private Dictionary? _providers; - private int _delayTimeout = 99999999; + private readonly int _delayTimeout = 99999999; private IObservableCollection _proxyGroups = new ObservableCollectionExtended(); private IObservableCollection _proxyDetails = new ObservableCollectionExtended(); @@ -28,8 +28,8 @@ namespace ServiceLib.ViewModels public ClashProxyModel SelectedDetail { get; set; } public ReactiveCommand ProxiesReloadCmd { get; } - public ReactiveCommand ProxiesDelaytestCmd { get; } - public ReactiveCommand ProxiesDelaytestPartCmd { get; } + public ReactiveCommand ProxiesDelayTestCmd { get; } + public ReactiveCommand ProxiesDelayTestPartCmd { get; } public ReactiveCommand ProxiesSelectActivityCmd { get; } [Reactive] @@ -50,12 +50,12 @@ namespace ServiceLib.ViewModels { await ProxiesReload(); }); - ProxiesDelaytestCmd = ReactiveCommand.CreateFromTask(async () => + ProxiesDelayTestCmd = ReactiveCommand.CreateFromTask(async () => { await ProxiesDelayTest(true); }); - ProxiesDelaytestPartCmd = ReactiveCommand.CreateFromTask(async () => + ProxiesDelayTestPartCmd = ReactiveCommand.CreateFromTask(async () => { await ProxiesDelayTest(false); }); @@ -78,7 +78,7 @@ namespace ServiceLib.ViewModels this.WhenAnyValue( x => x.RuleModeSelected, y => y >= 0) - .Subscribe(async c => await DoRulemodeSelected(c)); + .Subscribe(async c => await DoRuleModeSelected(c)); this.WhenAnyValue( x => x.SortingSelected, @@ -98,7 +98,7 @@ namespace ServiceLib.ViewModels _ = DelayTestTask(); } - private async Task DoRulemodeSelected(bool c) + private async Task DoRuleModeSelected(bool c) { if (!c) { @@ -158,7 +158,7 @@ namespace ServiceLib.ViewModels private async Task GetClashProxies(bool refreshUI) { - var ret = await ClashApiHandler.Instance.GetClashProxiesAsync(_config); + var ret = await ClashApiHandler.Instance.GetClashProxiesAsync(); if (ret?.Item1 == null || ret.Item2 == null) { return; @@ -255,29 +255,23 @@ namespace ServiceLib.ViewModels } _proxies.TryGetValue(name, out var proxy); - if (proxy == null || proxy.all == null) + if (proxy?.all == null) { return; } var lstDetails = new List(); foreach (var item in proxy.all) { - var IsActive = item == proxy.now; - var proxy2 = TryGetProxy(item); if (proxy2 == null) { continue; } - int delay = -1; - if (proxy2.history.Count > 0) - { - delay = proxy2.history[proxy2.history.Count - 1].delay; - } + var delay = proxy2.history?.Count > 0 ? proxy2.history.Last().delay : -1; lstDetails.Add(new ClashProxyModel() { - IsActive = IsActive, + IsActive = item == proxy.now, Name = item, Type = proxy2.type, Delay = delay <= 0 ? _delayTimeout : delay, @@ -374,12 +368,7 @@ namespace ServiceLib.ViewModels { ClashApiHandler.Instance.ClashProxiesDelayTest(blAll, _proxyDetails.ToList(), async (item, result) => { - if (item == null) - { - await GetClashProxies(true); - return; - } - if (result.IsNullOrEmpty()) + if (item == null || result.IsNullOrEmpty()) { return; } @@ -393,26 +382,28 @@ namespace ServiceLib.ViewModels { //UpdateHandler(false, $"{item.name}={result}"); var detail = _proxyDetails.FirstOrDefault(it => it.Name == result.IndexId); - if (detail != null) + if (detail == null) { - var dicResult = JsonUtils.Deserialize>(result.Delay); - if (dicResult != null && dicResult.TryGetValue("delay", out var value)) - { - detail.Delay = Convert.ToInt32(value.ToString()); - detail.DelayName = $"{detail.Delay}ms"; - } - else if (dicResult != null && dicResult.TryGetValue("message", out var value1)) - { - detail.Delay = _delayTimeout; - detail.DelayName = $"{value1}"; - } - else - { - detail.Delay = _delayTimeout; - detail.DelayName = string.Empty; - } - _proxyDetails.Replace(detail, JsonUtils.DeepCopy(detail)); + return; } + + var dicResult = JsonUtils.Deserialize>(result.Delay); + if (dicResult != null && dicResult.TryGetValue("delay", out var value)) + { + detail.Delay = Convert.ToInt32(value.ToString()); + detail.DelayName = $"{detail.Delay}ms"; + } + else if (dicResult != null && dicResult.TryGetValue("message", out var value1)) + { + detail.Delay = _delayTimeout; + detail.DelayName = $"{value1}"; + } + else + { + detail.Delay = _delayTimeout; + detail.DelayName = string.Empty; + } + _proxyDetails.Replace(detail, JsonUtils.DeepCopy(detail)); } #endregion proxy function diff --git a/v2rayN/v2rayN.Desktop/Views/ClashProxiesView.axaml.cs b/v2rayN/v2rayN.Desktop/Views/ClashProxiesView.axaml.cs index 36c26b34..78552cae 100644 --- a/v2rayN/v2rayN.Desktop/Views/ClashProxiesView.axaml.cs +++ b/v2rayN/v2rayN.Desktop/Views/ClashProxiesView.axaml.cs @@ -27,9 +27,9 @@ namespace v2rayN.Desktop.Views this.Bind(ViewModel, vm => vm.SelectedDetail, v => v.lstProxyDetails.SelectedItem).DisposeWith(disposables); this.BindCommand(ViewModel, vm => vm.ProxiesReloadCmd, v => v.menuProxiesReload).DisposeWith(disposables); - this.BindCommand(ViewModel, vm => vm.ProxiesDelaytestCmd, v => v.menuProxiesDelaytest).DisposeWith(disposables); + this.BindCommand(ViewModel, vm => vm.ProxiesDelayTestCmd, v => v.menuProxiesDelaytest).DisposeWith(disposables); - this.BindCommand(ViewModel, vm => vm.ProxiesDelaytestPartCmd, v => v.menuProxiesDelaytestPart).DisposeWith(disposables); + this.BindCommand(ViewModel, vm => vm.ProxiesDelayTestPartCmd, v => v.menuProxiesDelaytestPart).DisposeWith(disposables); this.BindCommand(ViewModel, vm => vm.ProxiesSelectActivityCmd, v => v.menuProxiesSelectActivity).DisposeWith(disposables); this.Bind(ViewModel, vm => vm.RuleModeSelected, v => v.cmbRulemode.SelectedIndex).DisposeWith(disposables); diff --git a/v2rayN/v2rayN/Views/ClashProxiesView.xaml.cs b/v2rayN/v2rayN/Views/ClashProxiesView.xaml.cs index c3545368..6b4ec8d0 100644 --- a/v2rayN/v2rayN/Views/ClashProxiesView.xaml.cs +++ b/v2rayN/v2rayN/Views/ClashProxiesView.xaml.cs @@ -28,9 +28,9 @@ namespace v2rayN.Views this.Bind(ViewModel, vm => vm.SelectedDetail, v => v.lstProxyDetails.SelectedItem).DisposeWith(disposables); this.BindCommand(ViewModel, vm => vm.ProxiesReloadCmd, v => v.menuProxiesReload).DisposeWith(disposables); - this.BindCommand(ViewModel, vm => vm.ProxiesDelaytestCmd, v => v.menuProxiesDelaytest).DisposeWith(disposables); + this.BindCommand(ViewModel, vm => vm.ProxiesDelayTestCmd, v => v.menuProxiesDelaytest).DisposeWith(disposables); - this.BindCommand(ViewModel, vm => vm.ProxiesDelaytestPartCmd, v => v.menuProxiesDelaytestPart).DisposeWith(disposables); + this.BindCommand(ViewModel, vm => vm.ProxiesDelayTestPartCmd, v => v.menuProxiesDelaytestPart).DisposeWith(disposables); this.BindCommand(ViewModel, vm => vm.ProxiesSelectActivityCmd, v => v.menuProxiesSelectActivity).DisposeWith(disposables); this.Bind(ViewModel, vm => vm.RuleModeSelected, v => v.cmbRulemode.SelectedIndex).DisposeWith(disposables);