From d15d149b87e991333736f7b5af9ac551f03a2677 Mon Sep 17 00:00:00 2001 From: ggurdin Date: Mon, 15 Jul 2024 11:19:19 -0400 Subject: [PATCH] removed calls to unsafeGetUserFromMemoryOrFallback that was causing stack overflow error --- .../invitation_selection.dart | 24 +++++++++++++++---- .../utils/get_chat_list_item_subtitle.dart | 12 ++++++---- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/lib/pages/invitation_selection/invitation_selection.dart b/lib/pages/invitation_selection/invitation_selection.dart index 5b69e7049..e59e03819 100644 --- a/lib/pages/invitation_selection/invitation_selection.dart +++ b/lib/pages/invitation_selection/invitation_selection.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'package:adaptive_dialog/adaptive_dialog.dart'; +import 'package:collection/collection.dart'; import 'package:fluffychat/pages/invitation_selection/invitation_selection_view.dart'; import 'package:fluffychat/pangea/constants/class_default_values.dart'; import 'package:fluffychat/pangea/extensions/pangea_room_extension/pangea_room_extension.dart'; @@ -48,16 +49,29 @@ class InvitationSelectionController extends State { ); final contacts = client.rooms .where((r) => r.isDirectChat) - .map((r) => r.unsafeGetUserFromMemoryOrFallback(r.directChatMatrixID!)) + // #Pangea + // .map((r) => r.unsafeGetUserFromMemoryOrFallback(r.directChatMatrixID!)) + .map( + (r) => r + .getParticipants() + .firstWhereOrNull((u) => u.id != client.userID), + ) + // Pangea# .toList(); + // #Pangea + contacts.removeWhere((u) => u == null || u.id != BotName.byEnvironment); contacts.sort( - (a, b) => a.calcDisplayname().toLowerCase().compareTo( - b.calcDisplayname().toLowerCase(), + (a, b) => a!.calcDisplayname().toLowerCase().compareTo( + b!.calcDisplayname().toLowerCase(), ), ); - //#Pangea + return contacts.cast(); + // contacts.sort( + // (a, b) => a.calcDisplayname().toLowerCase().compareTo( + // b.calcDisplayname().toLowerCase(), + // ), + // ); // return contacts; - return contacts.where((u) => u.id != BotName.byEnvironment).toList(); //Pangea# } diff --git a/lib/pangea/utils/get_chat_list_item_subtitle.dart b/lib/pangea/utils/get_chat_list_item_subtitle.dart index bd8d064f5..76bd453b6 100644 --- a/lib/pangea/utils/get_chat_list_item_subtitle.dart +++ b/lib/pangea/utils/get_chat_list_item_subtitle.dart @@ -82,15 +82,19 @@ class GetChatListItemSubtitle { final i18n = MatrixLocals(l10n); - if (text == null) return l10n.emptyChat; + if (text == null || event.room.lastEvent == null) { + return l10n.emptyChat; + } if (!event.room.isDirectChat || - event.room.directChatMatrixID != event.room.lastEvent?.senderId) { + event.room.directChatMatrixID != event.room.lastEvent!.senderId) { final senderNameOrYou = event.senderId == event.room.client.userID ? i18n.you : event.room - .unsafeGetUserFromMemoryOrFallback(event.senderId) - .calcDisplayname(i18n: i18n); + .getParticipants() + .firstWhereOrNull((u) => u.id != event!.room.client.userID) + ?.calcDisplayname(i18n: i18n) ?? + event.room.lastEvent!.senderId; return "$senderNameOrYou: $text"; }