From c16533ecff360c7c619cdbf71a6298cdec934fe7 Mon Sep 17 00:00:00 2001 From: ggurdin Date: Wed, 19 Jun 2024 13:21:29 -0400 Subject: [PATCH 1/3] set activeSpaceId to null after navigating to all chats --- lib/pages/chat_list/chat_list.dart | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/pages/chat_list/chat_list.dart b/lib/pages/chat_list/chat_list.dart index 7448982d5..389bcf477 100644 --- a/lib/pages/chat_list/chat_list.dart +++ b/lib/pages/chat_list/chat_list.dart @@ -166,6 +166,11 @@ class ChatListController extends State // Pangea# selectedRoomIds.clear(); activeFilter = getActiveFilterByDestination(i); + // #Pangea + if (activeFilter != ActiveFilter.spaces) { + setActiveSpace(null); + } + // Pangea# }); // #Pangea final bool clickedAllSpaces = (!AppConfig.separateChatTypes && i == 1) || From 6b17343cca25cc84d97c5fc992ffbb34521b681e Mon Sep 17 00:00:00 2001 From: ggurdin Date: Wed, 19 Jun 2024 14:38:53 -0400 Subject: [PATCH 2/3] oops, only set activeSpaceId to null --- lib/pages/chat_list/chat_list.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pages/chat_list/chat_list.dart b/lib/pages/chat_list/chat_list.dart index 389bcf477..9d7ff2440 100644 --- a/lib/pages/chat_list/chat_list.dart +++ b/lib/pages/chat_list/chat_list.dart @@ -168,7 +168,7 @@ class ChatListController extends State activeFilter = getActiveFilterByDestination(i); // #Pangea if (activeFilter != ActiveFilter.spaces) { - setActiveSpace(null); + activeSpaceId = null; } // Pangea# }); From 2c82dfc7d7f31b680c9c1caa4430995ad88f7f3d Mon Sep 17 00:00:00 2001 From: ggurdin Date: Wed, 19 Jun 2024 15:12:08 -0400 Subject: [PATCH 3/3] added completer to updateAnalytics function to prevent it running many times in a row, also save empty analytics data once to indicate that chats have been checked and none was found --- .../controllers/my_analytics_controller.dart | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/lib/pangea/controllers/my_analytics_controller.dart b/lib/pangea/controllers/my_analytics_controller.dart index cd95dd002..77a644863 100644 --- a/lib/pangea/controllers/my_analytics_controller.dart +++ b/lib/pangea/controllers/my_analytics_controller.dart @@ -148,7 +148,28 @@ class MyAnalyticsController extends BaseController { } } + Completer? _updateCompleter; Future updateAnalytics() async { + if (!(_updateCompleter?.isCompleted ?? true)) { + await _updateCompleter!.future; + return; + } + _updateCompleter = Completer(); + try { + await _updateAnalytics(); + } catch (err, s) { + ErrorHandler.logError( + e: err, + m: "Failed to update analytics", + s: s, + ); + } finally { + _updateCompleter?.complete(); + _updateCompleter = null; + } + } + + Future _updateAnalytics() async { // top level analytics sending function. Send analytics // for each type of analytics event // to each of the applicable analytics rooms @@ -237,7 +258,11 @@ class MyAnalyticsController extends BaseController { } // send the analytics data to the analytics room - if (analyticsContent.isEmpty) return; + // if there is no data to send, don't send an event, + // unless no events have been sent yet. In that case, send an event + // with no data to indicate that the the system checked for data + // and found none, so the system doesn't repeatedly check for data + if (analyticsContent.isEmpty && lastUpdated != null) return; await AnalyticsEvent.sendEvent( analyticsRoom, type,