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.onDispose(
ref.listen(NewEventsController.provider(roomId), (_, next) async { ref.listen(NewEventsController.provider(roomId), (_, next) async {
final controller = await future;
for (final event in next) { for (final event in next) {
if (event.type == "m.room.redaction") { if (event.type == "m.room.redaction") {
final controller = await future; final controller = await future;
final message = controller.messages.firstWhereOrNull( final message = controller.messages.firstWhereOrNull(
(message) => message.id == event.content["redacts"], (message) => message.id == event.content["redacts"],
); );
if (message == null) return; if (message == null || !ref.mounted) return;
await controller.removeMessage(message); await controller.removeMessage(message);
} else { } else {
final message = await ref.read( final message = await ref.watch(
MessageController.provider( MessageController.provider(
MessageConfig(event: event, includeEdits: true), MessageConfig(event: event, includeEdits: true),
).future, ).future,
@ -64,7 +65,7 @@ class RoomChatController extends AsyncNotifier<ChatController> {
final oldMessage = controller.messages.firstWhereOrNull( final oldMessage = controller.messages.firstWhereOrNull(
(element) => element.id == event.relatesTo, (element) => element.id == event.relatesTo,
); );
if (oldMessage == null || message == null) return; if (oldMessage == null || message == null || !ref.mounted) return;
return await updateMessage( return await updateMessage(
oldMessage, oldMessage,
@ -84,8 +85,9 @@ class RoomChatController extends AsyncNotifier<ChatController> {
if (message != null && if (message != null &&
!controller.messages.any( !controller.messages.any(
(oldMessage) => oldMessage.id == message.id, (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 "dart:io";
import "package:fast_immutable_collections/fast_immutable_collections.dart"; import "package:fast_immutable_collections/fast_immutable_collections.dart";
import "package:flutter/foundation.dart"; import "package:flutter/foundation.dart";
@ -43,6 +44,7 @@ void showError(Object error, [StackTrace? stackTrace]) {
if (error.toString().contains("Invalid image data")) return; if (error.toString().contains("Invalid image data")) return;
debugPrintStack(stackTrace: stackTrace, label: error.toString()); debugPrintStack(stackTrace: stackTrace, label: error.toString());
debugger();
if (navigatorKey.currentContext != null) { if (navigatorKey.currentContext != null) {
Future.delayed( Future.delayed(
Duration.zero, Duration.zero,