From 322acbd694c674e1573a20cb77db9a5cd0d8651d Mon Sep 17 00:00:00 2001 From: Henry-Hiles Date: Fri, 30 Jan 2026 18:42:11 +0100 Subject: [PATCH] safety checks and message fix --- lib/controllers/room_chat_controller.dart | 12 +++++++----- lib/main.dart | 2 ++ 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/controllers/room_chat_controller.dart b/lib/controllers/room_chat_controller.dart index 3fa5c7f..091cdc9 100644 --- a/lib/controllers/room_chat_controller.dart +++ b/lib/controllers/room_chat_controller.dart @@ -44,17 +44,18 @@ class RoomChatController extends AsyncNotifier { ref.onDispose( ref.listen(NewEventsController.provider(roomId), (_, next) async { + final controller = await future; for (final event in next) { if (event.type == "m.room.redaction") { final controller = await future; final message = controller.messages.firstWhereOrNull( (message) => message.id == event.content["redacts"], ); - if (message == null) return; + if (message == null || !ref.mounted) return; await controller.removeMessage(message); } else { - final message = await ref.read( + final message = await ref.watch( MessageController.provider( MessageConfig(event: event, includeEdits: true), ).future, @@ -64,7 +65,7 @@ class RoomChatController extends AsyncNotifier { final oldMessage = controller.messages.firstWhereOrNull( (element) => element.id == event.relatesTo, ); - if (oldMessage == null || message == null) return; + if (oldMessage == null || message == null || !ref.mounted) return; return await updateMessage( oldMessage, @@ -84,8 +85,9 @@ class RoomChatController extends AsyncNotifier { if (message != null && !controller.messages.any( (oldMessage) => oldMessage.id == message.id, - )) { - await insertMessage(message); + ) && + ref.mounted) { + await controller.insertMessage(message); } } } diff --git a/lib/main.dart b/lib/main.dart index e51d8af..ab65e4b 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,3 +1,4 @@ +import "dart:developer"; import "dart:io"; import "package:fast_immutable_collections/fast_immutable_collections.dart"; import "package:flutter/foundation.dart"; @@ -43,6 +44,7 @@ void showError(Object error, [StackTrace? stackTrace]) { if (error.toString().contains("Invalid image data")) return; debugPrintStack(stackTrace: stackTrace, label: error.toString()); + debugger(); if (navigatorKey.currentContext != null) { Future.delayed( Duration.zero,