修离线缓存

This commit is contained in:
2021-10-19 23:13:28 +02:00
parent 888ddce4ef
commit 6f5c21aa8f
6 changed files with 53 additions and 28 deletions

View File

@@ -1,5 +1,7 @@
using AnotherReplayReader.Utils;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Net;
using System.Threading.Tasks;
@@ -20,16 +22,21 @@ namespace AnotherReplayReader
{
InitializeComponent();
_identity = identity;
Refresh();
Refresh(true);
}
private async void Refresh()
private async void Refresh(bool showCached)
{
_setIPButton.IsEnabled = false;
try
{
_dataGrid.Items.Clear();
_dataGrid.Items.Add(new IpAndPlayer { Ip = 0, Id = "正在加载..." });
var loading = new IpAndPlayer[] { new() { Ip = 0, Id = "正在加载..." } };
_dataGrid.ItemsSource = loading;
if (showCached)
{
await Display();
_dataGrid.ItemsSource = loading.Concat(_dataGrid.ItemsSource.Cast<IpAndPlayer>());
}
await _identity.Fetch();
await Display();
}
@@ -45,10 +52,10 @@ namespace AnotherReplayReader
private async Task Display(string filter = "", string nameFilter = "")
{
var newList = await Task.Run(() =>
var result = await Task.Run(() =>
{
var pinyin = nameFilter.ToPinyin();
return _identity
var query = _identity
.AsSortedList()
.Where(x =>
{
@@ -61,13 +68,10 @@ namespace AnotherReplayReader
return true;
}
return x.Id.ContainsIgnoreCase(nameFilter);
})
.ToArray();
});
return new ObservableCollection<IpAndPlayer>(query);
});
_dataGrid.Items.Clear();
_dataGrid.ItemsSource = newList;
_dataGrid.Items.Refresh();
_dataGrid.ItemsSource = result;
}
private async void OnClick(object sender, RoutedEventArgs e)
@@ -97,7 +101,7 @@ namespace AnotherReplayReader
MessageBox.Show(this, "设置 IP 表失败");
}
Refresh();
Refresh(false);
}
catch (Exception exception)
{