blob: 16051b8b707f0db6cf333891c35f04399dc2204e (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
using System.Collections.ObjectModel;
using ArcaneLibs;
using LibMatrix;
using LibMatrix.Helpers;
using LibMatrix.Homeservers;
using LibMatrix.Responses;
using MatrixUtils.Abstractions;
namespace MatrixUtils.Web.Pages.Client.ClientComponents;
public class ClientSyncWrapper(AuthenticatedHomeserverGeneric homeserver) : NotifyPropertyChanged {
private SyncHelper _syncHelper = new SyncHelper(homeserver) {
MinimumDelay = TimeSpan.FromMilliseconds(2000),
IsInitialSync = false
};
private string _status = "Loading...";
public ObservableCollection<StateEvent> AccountData { get; set; } = new();
public ObservableCollection<RoomInfo> Rooms { get; set; } = new();
public string Status {
get => _status;
set => SetField(ref _status, value);
}
public async Task Start() {
Task.Yield();
var resp = _syncHelper.EnumerateSyncAsync();
Status = $"[{DateTime.Now:s}] Syncing...";
await foreach (var response in resp) {
Task.Yield();
Status = $"[{DateTime.Now:s}] {response.Rooms?.Join?.Count ?? 0 + response.Rooms?.Invite?.Count ?? 0 + response.Rooms?.Leave?.Count ?? 0} rooms, {response.AccountData?.Events?.Count ?? 0} account data, {response.ToDevice?.Events?.Count ?? 0} to-device, {response.DeviceLists?.Changed?.Count ?? 0} device lists, {response.Presence?.Events?.Count ?? 0} presence updates";
await HandleSyncResponse(response);
await Task.Yield();
}
}
private async Task HandleSyncResponse(SyncResponse resp) {
}
}
|