Skip to content

Commit

Permalink
🐛 加速数据树结构某些情况下选中状态也异常问题修复
Browse files Browse the repository at this point in the history
  • Loading branch information
rmbadmin committed Jul 1, 2024
1 parent 83f0634 commit e1adf07
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 23 deletions.
2 changes: 1 addition & 1 deletion ref/SteamClient
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
// ReSharper disable once CheckNamespace
using Avalonia.Data;
using Google.Protobuf.WellKnownTypes;
using System.Linq;

namespace BD.WTTS.Services;

Expand Down Expand Up @@ -65,12 +67,12 @@ public sealed partial class ProxyService
.ToObservableChangeSet()
.AutoRefresh(x => x.ObservableItems)
.TransformMany(t => t.ObservableItems ?? new ObservableCollection<AccelerateProjectDTO>())
.AutoRefresh(x => x.Checked)
.WhenPropertyChanged(x => x.Checked, false)
.AutoRefresh(x => x.ThreeStateEnable)
.WhenPropertyChanged(x => x.ThreeStateEnable, false)
.Subscribe(_ =>
{
IsChangeSupportProxyServicesStatus = true;
ProxySettings.SupportProxyServicesStatus.Value = EnableProxyDomains?.Select(k => k.Id.ToString()).ToImmutableHashSet();
ProxySettings.SupportProxyServicesStatus.Value = GetAccelerateEnableAllIds(EnableProxyDomains).ToImmutableHashSet();
}));

this.WhenAnyValue(v => v.ProxyScripts)
Expand Down Expand Up @@ -152,18 +154,18 @@ public async Task StartOrStopProxyService(bool startOrStop)
}
}

public IEnumerable<AccelerateProjectDTO>? GetEnableProxyDomains()
public IEnumerable<AccelerateProjectDTO> GetEnableProxyDomains()
{
if (!ProxyDomains.Items.Any_Nullable())
return null;
return [];
var data = ProxyDomains.Items
.Where(x => x.Items != null)
.SelectMany(s => s.Items!.Where(w => w.ThreeStateEnable != false));
//return data.Concat(data.SelectMany(s => GetProxyDomainsItems(s)));
return data;
}

public IReadOnlyCollection<AccelerateProjectDTO>? EnableProxyDomains => GetEnableProxyDomains()?.ToImmutableArray();
public IReadOnlyCollection<AccelerateProjectDTO>? EnableProxyDomains => GetEnableProxyDomains().ToImmutableArray();

//static IEnumerable<AccelerateProjectDTO>? GetProxyDomainsItems(AccelerateProjectDTO accelerates)
//{
Expand Down Expand Up @@ -403,22 +405,8 @@ public async Task InitializeAccelerateAsync()
{
var items = ProxyDomains.Items!.SelectMany(s => s.Items!);
var enableItems = ProxySettings.SupportProxyServicesStatus.Value;
foreach (var item in items)
{
if (enableItems.Contains(item.Id.ToString()))
{
item.ThreeStateEnable = true;
}
}
RestoreAccelerateEnableAllIds(items, enableItems);
}

//if (IsLoadImage && ProxyDomains.Items.Any_Nullable())
//{
// foreach (var item in ProxyDomains.Items)
// {
// item.ImageStream = ImageChannelType.AccelerateGroup.GetImageAsync(ImageUrlHelper.GetImageApiUrlById(item.ImageId));
// }
//}
}

public static bool IsChangeSupportProxyServicesStatus { get; set; }
Expand Down Expand Up @@ -462,6 +450,29 @@ private void LoadOrSaveLocalAccelerate()
}
}

private IEnumerable<string> GetAccelerateEnableAllIds(IEnumerable<AccelerateProjectDTO>? nodes)
{
if (nodes == null)
return Enumerable.Empty<string>();
return nodes.Where(s => s.ThreeStateEnable != false).SelectMany(node => new[] { node.Id.ToString() }.Concat(GetAccelerateEnableAllIds(node.Items)));
}

private void RestoreAccelerateEnableAllIds(IEnumerable<AccelerateProjectDTO> nodes, IReadOnlyCollection<string> enableItems)
{
foreach (var node in nodes)
{
if (node.Items.Any_Nullable())
{
RestoreAccelerateEnableAllIds(node.Items, enableItems);
continue;
}
if (enableItems.Contains(node.Id.ToString()))
{
node.ThreeStateEnable = true;
}
}
}

Timer? timer;

public void StartTimer()
Expand Down

0 comments on commit e1adf07

Please sign in to comment.