diff --git a/lib/pangea/controllers/my_analytics_controller.dart b/lib/pangea/controllers/my_analytics_controller.dart index 4c592a6fc..199d640ab 100644 --- a/lib/pangea/controllers/my_analytics_controller.dart +++ b/lib/pangea/controllers/my_analytics_controller.dart @@ -277,7 +277,11 @@ class MyAnalyticsController { // get the timelines for each chat final List> timelineFutures = []; for (final chat in chats) { - timelineFutures.add(chat.getTimeline()); + timelineFutures.add( + chat.timeline == null + ? chat.getTimeline() + : Future.value(chat.timeline), + ); } final List timelines = await Future.wait(timelineFutures); final Map timelineMap = diff --git a/lib/pangea/extensions/client_extension/general_info_extension.dart b/lib/pangea/extensions/client_extension/general_info_extension.dart index ca5df40cc..41f81442e 100644 --- a/lib/pangea/extensions/client_extension/general_info_extension.dart +++ b/lib/pangea/extensions/client_extension/general_info_extension.dart @@ -3,7 +3,7 @@ part of "client_extension.dart"; extension GeneralInfoClientExtension on Client { Future> get _teacherRoomIds async { final List adminRoomIds = []; - for (final Room adminSpace in (await _spacesImTeaching)) { + for (final Room adminSpace in (_spacesImTeaching)) { adminRoomIds.add(adminSpace.id); final List adminSpaceRooms = adminSpace.allSpaceChildRoomIds; adminRoomIds.addAll(adminSpaceRooms); @@ -59,7 +59,7 @@ extension GeneralInfoClientExtension on Client { final Event? originalEvent = await room!.getEventById(edittedEventId); if (originalEvent == null) return []; - final Timeline timeline = await room.getTimeline(); + final Timeline timeline = room.timeline ?? await room.getTimeline(); final List editEvents = originalEvent .aggregatedEvents( timeline, diff --git a/lib/pangea/extensions/pangea_room_extension/events_extension.dart b/lib/pangea/extensions/pangea_room_extension/events_extension.dart index bc820998c..182779853 100644 --- a/lib/pangea/extensions/pangea_room_extension/events_extension.dart +++ b/lib/pangea/extensions/pangea_room_extension/events_extension.dart @@ -320,7 +320,7 @@ extension EventsRoomExtension on Room { "In messageListForChat with room that is not a chat", ); } - final Timeline timeline = await getTimeline(); + final Timeline timeline = this.timeline ?? await getTimeline(); while (timeline.canRequestHistory && numberOfSearches < 50) { await timeline.requestHistory(historyCount: 100); @@ -433,7 +433,7 @@ extension EventsRoomExtension on Room { }) async { try { int numberOfSearches = 0; - final Timeline timeline = await getTimeline(); + final Timeline timeline = this.timeline ?? await getTimeline(); List relevantEvents() => timeline.events .where((event) => event.senderId == sender && event.type == type) diff --git a/lib/pangea/pages/analytics/construct_list.dart b/lib/pangea/pages/analytics/construct_list.dart index d46936c86..1848e7ada 100644 --- a/lib/pangea/pages/analytics/construct_list.dart +++ b/lib/pangea/pages/analytics/construct_list.dart @@ -166,7 +166,7 @@ class ConstructListViewState extends State { if (_timelinesCache.containsKey(use.chatId)) { timeline = _timelinesCache[use.chatId]; } else { - timeline = await msgRoom.getTimeline(); + timeline = msgRoom.timeline ?? await msgRoom.getTimeline(); _timelinesCache[use.chatId] = timeline; } diff --git a/lib/pangea/utils/get_chat_list_item_subtitle.dart b/lib/pangea/utils/get_chat_list_item_subtitle.dart index 76bd453b6..d02ac7088 100644 --- a/lib/pangea/utils/get_chat_list_item_subtitle.dart +++ b/lib/pangea/utils/get_chat_list_item_subtitle.dart @@ -36,9 +36,10 @@ class GetChatListItemSubtitle { eventContextId = null; } - final Timeline timeline = await event.room.getTimeline( - eventContextId: eventContextId, - ); + final Timeline timeline = event.room.timeline != null && + event.room.timeline!.chunk.eventsMap.containsKey(eventContextId) + ? event.room.timeline! + : await event.room.getTimeline(eventContextId: eventContextId); if (moveBackInTimeline(event)) { event = timeline.events.firstWhereOrNull((e) => !moveBackInTimeline(e));