diff --git a/lib/pages/chat_list/chat_list.dart b/lib/pages/chat_list/chat_list.dart index 7448982d5..9d7ff2440 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) { + activeSpaceId = null; + } + // Pangea# }); // #Pangea final bool clickedAllSpaces = (!AppConfig.separateChatTypes && i == 1) || diff --git a/lib/pangea/controllers/my_analytics_controller.dart b/lib/pangea/controllers/my_analytics_controller.dart index f2aeb0410..f00e601a8 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 @@ -238,7 +259,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,