Gomuks SDK Rewrite #2

Closed
Henry-Hiles wants to merge 34 commits from go into main
2 changed files with 9 additions and 5 deletions
Showing only changes of commit 322acbd694 - Show all commits

safety checks and message fix

Henry Hiles 2026-01-30 18:42:11 +01:00
No known key found for this signature in database

View file

@ -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);
}
}
}

View file

@ -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,