diff --git a/MatrixUtils.Web/Pages/Rooms/Index.razor b/MatrixUtils.Web/Pages/Rooms/Index.razor
index 0373a46..115c903 100644
--- a/MatrixUtils.Web/Pages/Rooms/Index.razor
+++ b/MatrixUtils.Web/Pages/Rooms/Index.razor
@@ -73,7 +73,7 @@
GlobalProfile = await Homeserver.GetProfileAsync(Homeserver.WhoAmI.UserId);
var filter = await Homeserver.NamedCaches.FilterCache.GetOrSetValueAsync(CommonSyncFilters.GetBasicRoomInfo);
- var filterData = await Homeserver.GetFilterAsync(filter);
+ // var filterData = await Homeserver.GetFilterAsync(filter);
// Rooms = new ObservableCollection<RoomInfo>(rooms.Select(room => new RoomInfo(room)));
// foreach (var stateType in filterData.Room?.State?.Types ?? []) {
@@ -97,7 +97,8 @@
syncHelper = new SyncHelper(Homeserver, logger) {
Timeout = 30000,
FilterId = filter,
- MinimumDelay = TimeSpan.FromMilliseconds(5000)
+ MinimumDelay = TimeSpan.FromMilliseconds(5000),
+ UseMsc4222StateAfter = true
};
// profileSyncHelper = new SyncHelper(Homeserver, logger) {
// Timeout = 10000,
@@ -106,9 +107,9 @@
// };
// profileUpdateFilter.Room.State.Senders.Add(Homeserver.WhoAmI.UserId);
- RunSyncLoop(syncHelper);
+ _ = RunSyncLoop(syncHelper);
// RunSyncLoop(profileSyncHelper);
- RunQueueProcessor();
+ _ = RunQueueProcessor();
await base.OnInitializedAsync();
}
@@ -138,7 +139,7 @@
}
else {
// Console.WriteLine($"QueueWorker: encountered new room {roomId}!");
- room = new RoomInfo(Homeserver.GetRoom(roomId), roomData.State?.Events);
+ room = new RoomInfo(Homeserver.GetRoom(roomId), roomData.StateAfter?.Events);
Rooms.Add(room);
}
@@ -147,11 +148,10 @@
throw new InvalidDataException("Somehow this is null???");
}
- if (roomData.State?.Events is { Count: > 0 })
- room.StateEvents.MergeStateEventLists(roomData.State.Events);
- else {
+ if (roomData is { StateAfter.Events.Count: > 0 })
+ room.StateEvents!.MergeStateEventLists(roomData.StateAfter.Events);
+ else
Console.WriteLine($"QueueWorker: could not merge state for {room.Room.RoomId} as new data contains no state events!");
- }
if (maxUpdates % 100 == 0) {
Console.WriteLine($"QueueWorker: {queue.Count} entries left in queue, {maxUpdates} maxUpdates left, RenderContents: {RenderContents}");
@@ -181,7 +181,8 @@
get => _status;
set {
_status = value;
- StateHasChanged();
+ // StateHasChanged();
+ Console.WriteLine(value);
}
}
@@ -191,7 +192,8 @@
get => _status2;
set {
_status2 = value;
- StateHasChanged();
+ // StateHasChanged();
+ Console.WriteLine(value);
}
}
@@ -203,26 +205,24 @@
var syncs = syncHelper.EnumerateSyncAsync();
await foreach (var sync in syncs) {
- Console.WriteLine("trying sync");
- if (sync is null) continue;
-
var filter = await Homeserver.GetFilterAsync(syncHelper.FilterId);
Status = $"Got sync with {sync.Rooms?.Join?.Count ?? 0} room updates, next batch: {sync.NextBatch}!";
- if (sync?.Rooms?.Join != null)
+ if (sync.Rooms?.Join != null)
foreach (var joinedRoom in sync.Rooms.Join)
- if ( /*joinedRoom.Value.AccountData?.Events?.Count > 0 ||*/ joinedRoom.Value.State?.Events?.Count > 0) {
- joinedRoom.Value.State.Events.RemoveAll(x => x.Type == "m.room.member" && x.StateKey != Homeserver.WhoAmI?.UserId);
+ if (joinedRoom.Value.StateAfter?.Events?.Count > 0) {
+ joinedRoom.Value.StateAfter?.Events?.RemoveAll(x => x.Type == "m.room.member" && x.StateKey != Homeserver.WhoAmI.UserId);
// We can't trust servers to give us what we ask for, and this ruins performance
// Thanks, Conduit.
- joinedRoom.Value.State.Events.RemoveAll(x => filter.Room?.State?.Types?.Contains(x.Type) == false);
- if (filter.Room?.State?.NotSenders?.Any() ?? false)
- joinedRoom.Value.State.Events.RemoveAll(x => filter.Room?.State?.NotSenders?.Contains(x.Sender) ?? false);
+ if (filter is { Room.State.Types.Count: > 0 })
+ joinedRoom.Value.StateAfter?.Events?.RemoveAll(x => filter.Room?.State?.Types?.Contains(x.Type) == false);
+ if (filter is { Room.State.NotSenders.Count: > 0 })
+ joinedRoom.Value.StateAfter?.Events?.RemoveAll(x => filter.Room?.State?.NotSenders?.Contains(x.Sender!) ?? false);
queue.Enqueue(joinedRoom);
}
- if (sync.Rooms.Leave is { Count: > 0 })
+ if (sync.Rooms?.Leave is { Count: > 0 })
foreach (var leftRoom in sync.Rooms.Leave)
if (Rooms.Any(x => x.Room.RoomId == leftRoom.Key))
Rooms.Remove(Rooms.First(x => x.Room.RoomId == leftRoom.Key));
@@ -231,6 +231,7 @@
$"{sync.Rooms?.Join?.Count ?? 0} new updates!";
Status2 = $"Next batch: {sync?.NextBatch}";
+ StateHasChanged();
await Task.Yield();
}
}
|