about summary refs log tree commit diff
path: root/ModerationClient/ViewModels
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2025-03-31 09:32:24 +0200
committerRory& <root@rory.gay>2025-03-31 09:32:24 +0200
commit5c5a9fb78c45f80330775286b65b5d78e3e99934 (patch)
tree51ddc9889274cbd052f5f368e0c64b4d5c8747e0 /ModerationClient/ViewModels
parentFix some crashes (diff)
downloadModerationClient-master.tar.xz
Cleanup and some error handling HEAD master
Diffstat (limited to 'ModerationClient/ViewModels')
-rw-r--r--ModerationClient/ViewModels/ClientViewModel.cs27
1 files changed, 25 insertions, 2 deletions
diff --git a/ModerationClient/ViewModels/ClientViewModel.cs b/ModerationClient/ViewModels/ClientViewModel.cs

index a2da5be..378c0de 100644 --- a/ModerationClient/ViewModels/ClientViewModel.cs +++ b/ModerationClient/ViewModels/ClientViewModel.cs
@@ -6,6 +6,8 @@ using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.IO; using System.Linq; +using System.Net; +using System.Net.Http; using System.Text.Json; using System.Threading; using System.Threading.Tasks; @@ -15,8 +17,10 @@ using ArcaneLibs.Extensions; using LibMatrix; using LibMatrix.EventTypes.Spec.State; using LibMatrix.EventTypes.Spec.State.RoomInfo; +using LibMatrix.Filters; using LibMatrix.Helpers; using LibMatrix.Responses; +using LibMatrix.Services; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using ModerationClient.Models.SpaceTreeNodes; @@ -90,9 +94,13 @@ public partial class ClientViewModel : ViewModelBase { var ssr = new SyncStateResolver(_authService.Homeserver, _logger, storageProvider: store); Console.WriteLine("Created sync state resolver..."); Status = "Optimising sync store, please wait... Creating new snapshot..."; + var sw = Stopwatch.StartNew(); await ssr.OptimiseStore((remaining, total) => { - if (remaining % (remaining / 10) == 0) + // if (remaining % (remaining / 10) == 0) + if (sw.ElapsedMilliseconds > 100) { Status = $"Optimising sync store, please wait... {remaining}/{total} remaining..."; + sw.Restart(); + } }); Status = "Optimising sync store, please wait... Deleting old intermediate snapshots..."; await ssr.RemoveOldSnapshots(); @@ -110,6 +118,21 @@ public partial class ClientViewModel : ViewModelBase { Status = "Doing initial sync..."; var currentSyncRes = "init"; var lastGc = DateTime.Now; + int syncGatewayTimeouts = 0; + // var filter = new SyncFilter() { + // Room = new SyncFilter.RoomFilter() { + // Rooms = [] + // } + // }; + // + // sh.Filter = filter; + + sh.ExceptionHandlers.Add(async (ex) => { + if (ex is HttpRequestException { StatusCode: HttpStatusCode.GatewayTimeout }) { + syncGatewayTimeouts++; + Status = $"Got {syncGatewayTimeouts} sync gateway timeouts..."; + } + }); await foreach (var res in sh.EnumerateSyncAsync()) { var sw = Stopwatch.StartNew(); //log thing @@ -150,7 +173,7 @@ public partial class ClientViewModel : ViewModelBase { Console.WriteLine($"Processed sync {currentSyncRes} in {sw.ElapsedMilliseconds}ms (applied in: {applySw.ElapsedMilliseconds}ms)"); if (Paused) { Status = "Sync loop interrupted... Press pause/break to resume."; - while (Paused) await Task.Delay(1000); + while (Paused) await Task.Delay(100); } else Status = $"Syncing... {unoptimised++} unoptimised sync responses, last={currentSyncRes}...";