From c34306ea31402f02156147c4ae02ac00f5d425ac Mon Sep 17 00:00:00 2001 From: WilsonLe Date: Wed, 24 Jul 2024 09:42:29 -0400 Subject: [PATCH 1/5] bump matrix sdk version, fixes timeline memory issue --- pubspec.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pubspec.lock b/pubspec.lock index ae95fb892..d8e1587b8 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1434,7 +1434,7 @@ packages: description: path: "." ref: main - resolved-ref: "0a95cd8f3cfac8c9b0b59d6ee7fdbdb159949ca3" + resolved-ref: "3bafe47e6d1b958b795f1c78edb6f5f2da3093c5" url: "https://github.com/pangeachat/matrix-dart-sdk.git" source: git version: "0.30.0" From 421a6e9eddfa6f7d2e9c19c545a593ba3d20a3bb Mon Sep 17 00:00:00 2001 From: WilsonLe Date: Wed, 24 Jul 2024 13:57:21 -0400 Subject: [PATCH 2/5] bump to newer version of matrix sdk that fixes outdated events --- .../.gradle/6.7.1/fileHashes/fileHashes.lock | Bin 39 -> 39 bytes .../buildOutputCleanup/buildOutputCleanup.lock | Bin 39 -> 39 bytes .../android/.gradle/checksums/checksums.lock | Bin 39 -> 39 bytes pubspec.lock | 2 +- 4 files changed, 1 insertion(+), 1 deletion(-) diff --git a/pangea_packages/fcm_shared_isolate/android/.gradle/6.7.1/fileHashes/fileHashes.lock b/pangea_packages/fcm_shared_isolate/android/.gradle/6.7.1/fileHashes/fileHashes.lock index f1facd8351bcedf036c6985ed1ac7b5c21ff1f87..be611af26c2ebbbdbdb127baca6a52afe87af17a 100644 GIT binary patch delta 24 gcmY#apCBT9>$AI9+~JCMkGC+|wCtvj7_t8O!}T9}%em@_Z{0D6E3YXATM delta 24 fcmY#apCBT9J3ab5hnM4pl}!w+h6Wav<_rt~WMc;o diff --git a/pangea_packages/fcm_shared_isolate/android/.gradle/checksums/checksums.lock b/pangea_packages/fcm_shared_isolate/android/.gradle/checksums/checksums.lock index a148f5b0ee85072228e5cdc5e1edaa30a4ae84ab..5a4f57d7b1c552d1d74e126c633cc7fc36acf3cf 100644 GIT binary patch delta 24 gcmY#apCBT9>+{|4{K@xDItDPXT9}%em@_Z{0D86vQvd(} delta 24 gcmY#apCBT9J6-3|)`{1Oo98gF8X8zwnlmr}0CNxs5&!@I diff --git a/pubspec.lock b/pubspec.lock index d8e1587b8..bd9a05993 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1434,7 +1434,7 @@ packages: description: path: "." ref: main - resolved-ref: "3bafe47e6d1b958b795f1c78edb6f5f2da3093c5" + resolved-ref: "e812b69daae0149458b858cc613c26923ba53bdb" url: "https://github.com/pangeachat/matrix-dart-sdk.git" source: git version: "0.30.0" From e46b09f8361ad21abe77a9ad18607f909b696685 Mon Sep 17 00:00:00 2001 From: WilsonLe Date: Wed, 24 Jul 2024 15:42:24 -0400 Subject: [PATCH 3/5] upgrade matrix resolved ref --- .../.gradle/6.7.1/fileHashes/fileHashes.lock | Bin 39 -> 0 bytes .../buildOutputCleanup/buildOutputCleanup.lock | Bin 39 -> 0 bytes .../android/.gradle/checksums/checksums.lock | Bin 39 -> 0 bytes pubspec.lock | 2 +- 4 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 pangea_packages/fcm_shared_isolate/android/.gradle/6.7.1/fileHashes/fileHashes.lock delete mode 100644 pangea_packages/fcm_shared_isolate/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock delete mode 100644 pangea_packages/fcm_shared_isolate/android/.gradle/checksums/checksums.lock diff --git a/pangea_packages/fcm_shared_isolate/android/.gradle/6.7.1/fileHashes/fileHashes.lock b/pangea_packages/fcm_shared_isolate/android/.gradle/6.7.1/fileHashes/fileHashes.lock deleted file mode 100644 index be611af26c2ebbbdbdb127baca6a52afe87af17a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39 qcmZQ(pPrsFC-<%*0|YQLGcerx>@F5}xZ>U8Z49gyrluz53=9C(oC?+e diff --git a/pangea_packages/fcm_shared_isolate/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/pangea_packages/fcm_shared_isolate/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock deleted file mode 100644 index 4743266b3cd7afe1cf881b4f6049c2fe13cb0b89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39 qcmZQ}bn=zC_JSdv0Rm*085nMTUOuOFr*m%AZ3b2gQ&SUj1_l7m&I*wL diff --git a/pangea_packages/fcm_shared_isolate/android/.gradle/checksums/checksums.lock b/pangea_packages/fcm_shared_isolate/android/.gradle/checksums/checksums.lock deleted file mode 100644 index 5a4f57d7b1c552d1d74e126c633cc7fc36acf3cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39 scmZSnAb4*|_KHR73}C?S%gn%V>+{|4{K@xDItDPXT9}%em@_Z{00Pwu_W%F@ diff --git a/pubspec.lock b/pubspec.lock index bd9a05993..648cb96fe 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1434,7 +1434,7 @@ packages: description: path: "." ref: main - resolved-ref: "e812b69daae0149458b858cc613c26923ba53bdb" + resolved-ref: "0e27bd767a7f0faa7c25ea5f68292fb0b4f59a97" url: "https://github.com/pangeachat/matrix-dart-sdk.git" source: git version: "0.30.0" From 68ca0e770e7e103d8e014b13443d3cf63a50d45b Mon Sep 17 00:00:00 2001 From: WilsonLe Date: Thu, 25 Jul 2024 11:59:21 -0400 Subject: [PATCH 4/5] change the way getTimeline is used, bump matrix sdk version --- .../controllers/my_analytics_controller.dart | 6 +- .../general_info_extension.dart | 4 +- .../events_extension.dart | 4 +- .../pages/analytics/construct_list.dart | 2 +- .../utils/get_chat_list_item_subtitle.dart | 8 ++- pubspec.lock | 66 +------------------ 6 files changed, 16 insertions(+), 74 deletions(-) diff --git a/lib/pangea/controllers/my_analytics_controller.dart b/lib/pangea/controllers/my_analytics_controller.dart index 12baeb689..5960fab11 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..f09679444 100644 --- a/lib/pangea/utils/get_chat_list_item_subtitle.dart +++ b/lib/pangea/utils/get_chat_list_item_subtitle.dart @@ -36,9 +36,11 @@ class GetChatListItemSubtitle { eventContextId = null; } - final Timeline timeline = await event.room.getTimeline( - eventContextId: eventContextId, - ); + final Timeline timeline = event.room.timeline != null && + event.room.timeline!.events + .any((event) => event.eventId == eventContextId) + ? event.room.timeline! + : await event.room.getTimeline(eventContextId: eventContextId); if (moveBackInTimeline(event)) { event = timeline.events.firstWhereOrNull((e) => !moveBackInTimeline(e)); diff --git a/pubspec.lock b/pubspec.lock index 648cb96fe..c9559e143 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -105,14 +105,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.4.0" - base58check: - dependency: transitive - description: - name: base58check - sha256: "6c300dfc33e598d2fe26319e13f6243fea81eaf8204cb4c6b69ef20a625319a5" - url: "https://pub.dev" - source: hosted - version: "2.0.0" blurhash_dart: dependency: "direct main" description: @@ -145,14 +137,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.3.3" - canonical_json: - dependency: transitive - description: - name: canonical_json - sha256: d6be1dd66b420c6ac9f42e3693e09edf4ff6edfee26cb4c28c1c019fdb8c0c15 - url: "https://pub.dev" - source: hosted - version: "1.1.2" characters: dependency: transitive description: @@ -369,14 +353,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.9.9" - enhanced_enum: - dependency: transitive - description: - name: enhanced_enum - sha256: "074c5a8b9664799ca91e1e8b68003b8694cb19998671cbafd9c7779c13fcdecf" - url: "https://pub.dev" - source: hosted - version: "0.2.4" equatable: dependency: transitive description: @@ -1039,14 +1015,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.15.4" - html_unescape: - dependency: transitive - description: - name: html_unescape - sha256: "15362d7a18f19d7b742ef8dcb811f5fd2a2df98db9f80ea393c075189e0b61e3" - url: "https://pub.dev" - source: hosted - version: "2.0.0" http: dependency: "direct main" description: @@ -1434,7 +1402,7 @@ packages: description: path: "." ref: main - resolved-ref: "0e27bd767a7f0faa7c25ea5f68292fb0b4f59a97" + resolved-ref: "40b095825f2cefeac548009e96376110e72c76ff" url: "https://github.com/pangeachat/matrix-dart-sdk.git" source: git version: "0.30.0" @@ -1494,14 +1462,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.2" - olm: - dependency: transitive - description: - name: olm - sha256: "37948a6576949256f3ee1d0063d5b408634ff7e452b9a5c2f6410f9d7ced1c20" - url: "https://pub.dev" - source: hosted - version: "2.0.3" open_file: dependency: "direct main" description: @@ -1846,14 +1806,6 @@ packages: url: "https://pub.dev" source: hosted version: "3.2.1" - random_string: - dependency: transitive - description: - name: random_string - sha256: "03b52435aae8cbdd1056cf91bfc5bf845e9706724dd35ae2e99fa14a1ef79d02" - url: "https://pub.dev" - source: hosted - version: "2.3.1" receive_sharing_intent: dependency: "direct main" description: @@ -1974,14 +1926,6 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.1" - sdp_transform: - dependency: transitive - description: - name: sdp_transform - sha256: "73e412a5279a5c2de74001535208e20fff88f225c9a4571af0f7146202755e45" - url: "https://pub.dev" - source: hosted - version: "0.3.2" sentiment_dart: dependency: transitive description: @@ -2459,14 +2403,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.2.2" - unorm_dart: - dependency: transitive - description: - name: unorm_dart - sha256: "5b35bff83fce4d76467641438f9e867dc9bcfdb8c1694854f230579d68cd8f4b" - url: "https://pub.dev" - source: hosted - version: "0.2.0" url_launcher: dependency: "direct main" description: From 1924b3e2d1aefc617588bc10549f7033bdaceac1 Mon Sep 17 00:00:00 2001 From: WilsonLe Date: Thu, 25 Jul 2024 16:52:55 -0400 Subject: [PATCH 5/5] use chunk eventMaps to check if event exists --- .../utils/get_chat_list_item_subtitle.dart | 3 +- pubspec.lock | 66 ++++++++++++++++++- 2 files changed, 66 insertions(+), 3 deletions(-) diff --git a/lib/pangea/utils/get_chat_list_item_subtitle.dart b/lib/pangea/utils/get_chat_list_item_subtitle.dart index f09679444..d02ac7088 100644 --- a/lib/pangea/utils/get_chat_list_item_subtitle.dart +++ b/lib/pangea/utils/get_chat_list_item_subtitle.dart @@ -37,8 +37,7 @@ class GetChatListItemSubtitle { } final Timeline timeline = event.room.timeline != null && - event.room.timeline!.events - .any((event) => event.eventId == eventContextId) + event.room.timeline!.chunk.eventsMap.containsKey(eventContextId) ? event.room.timeline! : await event.room.getTimeline(eventContextId: eventContextId); diff --git a/pubspec.lock b/pubspec.lock index c9559e143..a0affbe48 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -105,6 +105,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.4.0" + base58check: + dependency: transitive + description: + name: base58check + sha256: "6c300dfc33e598d2fe26319e13f6243fea81eaf8204cb4c6b69ef20a625319a5" + url: "https://pub.dev" + source: hosted + version: "2.0.0" blurhash_dart: dependency: "direct main" description: @@ -137,6 +145,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.3.3" + canonical_json: + dependency: transitive + description: + name: canonical_json + sha256: d6be1dd66b420c6ac9f42e3693e09edf4ff6edfee26cb4c28c1c019fdb8c0c15 + url: "https://pub.dev" + source: hosted + version: "1.1.2" characters: dependency: transitive description: @@ -353,6 +369,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.9.9" + enhanced_enum: + dependency: transitive + description: + name: enhanced_enum + sha256: "074c5a8b9664799ca91e1e8b68003b8694cb19998671cbafd9c7779c13fcdecf" + url: "https://pub.dev" + source: hosted + version: "0.2.4" equatable: dependency: transitive description: @@ -1015,6 +1039,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.15.4" + html_unescape: + dependency: transitive + description: + name: html_unescape + sha256: "15362d7a18f19d7b742ef8dcb811f5fd2a2df98db9f80ea393c075189e0b61e3" + url: "https://pub.dev" + source: hosted + version: "2.0.0" http: dependency: "direct main" description: @@ -1402,7 +1434,7 @@ packages: description: path: "." ref: main - resolved-ref: "40b095825f2cefeac548009e96376110e72c76ff" + resolved-ref: "5f22d0e9aed99f3044a208bb69f446d470eaa464" url: "https://github.com/pangeachat/matrix-dart-sdk.git" source: git version: "0.30.0" @@ -1462,6 +1494,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.2" + olm: + dependency: transitive + description: + name: olm + sha256: "37948a6576949256f3ee1d0063d5b408634ff7e452b9a5c2f6410f9d7ced1c20" + url: "https://pub.dev" + source: hosted + version: "2.0.3" open_file: dependency: "direct main" description: @@ -1806,6 +1846,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.2.1" + random_string: + dependency: transitive + description: + name: random_string + sha256: "03b52435aae8cbdd1056cf91bfc5bf845e9706724dd35ae2e99fa14a1ef79d02" + url: "https://pub.dev" + source: hosted + version: "2.3.1" receive_sharing_intent: dependency: "direct main" description: @@ -1926,6 +1974,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.1" + sdp_transform: + dependency: transitive + description: + name: sdp_transform + sha256: "73e412a5279a5c2de74001535208e20fff88f225c9a4571af0f7146202755e45" + url: "https://pub.dev" + source: hosted + version: "0.3.2" sentiment_dart: dependency: transitive description: @@ -2403,6 +2459,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.2.2" + unorm_dart: + dependency: transitive + description: + name: unorm_dart + sha256: "5b35bff83fce4d76467641438f9e867dc9bcfdb8c1694854f230579d68cd8f4b" + url: "https://pub.dev" + source: hosted + version: "0.2.0" url_launcher: dependency: "direct main" description: