forked from Henry-Hiles/nexus
safety checks and message fix
This commit is contained in:
parent
2372ecd141
commit
985b6d52e0
2 changed files with 9 additions and 5 deletions
|
|
@ -44,17 +44,18 @@ class RoomChatController extends AsyncNotifier<ChatController> {
|
|||
|
||||
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<ChatController> {
|
|||
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<ChatController> {
|
|||
if (message != null &&
|
||||
!controller.messages.any(
|
||||
(oldMessage) => oldMessage.id == message.id,
|
||||
)) {
|
||||
await insertMessage(message);
|
||||
) &&
|
||||
ref.mounted) {
|
||||
await controller.insertMessage(message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue