From 22220beae232be9e9f289c705aa7ddebfa2dadcf Mon Sep 17 00:00:00 2001 From: ggurdin Date: Tue, 12 Nov 2024 09:06:40 -0500 Subject: [PATCH] reset room in startBotChat function after waiting for it in sync --- lib/pangea/controllers/pangea_controller.dart | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/lib/pangea/controllers/pangea_controller.dart b/lib/pangea/controllers/pangea_controller.dart index 3e737113d..9962e96e4 100644 --- a/lib/pangea/controllers/pangea_controller.dart +++ b/lib/pangea/controllers/pangea_controller.dart @@ -243,13 +243,23 @@ class PangeaController { ], ); - final room = matrixState.client.getRoomById(roomId); + Room? room = matrixState.client.getRoomById(roomId); if (room == null || room.membership != Membership.join) { // Wait for room actually appears in sync await matrixState.client.waitForRoomInSync(roomId, join: true); + room = matrixState.client.getRoomById(roomId); + if (room == null) { + ErrorHandler.logError( + e: "Bot chat null after waiting for room in sync", + data: { + "roomId": roomId, + }, + ); + return null; + } } - final botOptions = room!.getState(PangeaEventTypes.botOptions); + final botOptions = room.getState(PangeaEventTypes.botOptions); if (botOptions == null) { await matrixState.client.setRoomStateWithKey( roomId, @@ -277,7 +287,10 @@ class PangeaController { } final Room botDMWithLatestActivity = botDMs.reduce((a, b) { - if (a.timeline == null || b.timeline == null) { + if (a.timeline == null || + b.timeline == null || + a.timeline!.events.isEmpty || + b.timeline!.events.isEmpty) { return a; } final aLastEvent = a.timeline!.events.last;