diff --git a/lib/pangea/controllers/my_analytics_controller.dart b/lib/pangea/controllers/my_analytics_controller.dart index 12baeb689..4c592a6fc 100644 --- a/lib/pangea/controllers/my_analytics_controller.dart +++ b/lib/pangea/controllers/my_analytics_controller.dart @@ -233,11 +233,11 @@ class MyAnalyticsController { if (userL2 == null || _client.userID == null) return; // analytics room for the user and current target language - final Room analyticsRoom = await _client.getMyAnalyticsRoom(userL2!); + final Room? analyticsRoom = await _client.getMyAnalyticsRoom(userL2!); // get the last time analytics were updated for this room final DateTime? l2AnalyticsLastUpdated = - await analyticsRoom.analyticsLastUpdated( + await analyticsRoom?.analyticsLastUpdated( PangeaEventTypes.summaryAnalytics, _client.userID!, ); @@ -307,7 +307,7 @@ class MyAnalyticsController { // if there's new content to be sent, or if lastUpdated hasn't been // set yet for this room, send the analytics events if (summaryContent.isNotEmpty || l2AnalyticsLastUpdated == null) { - await analyticsRoom.sendSummaryAnalyticsEvent( + await analyticsRoom?.sendSummaryAnalyticsEvent( summaryContent, ); } @@ -347,7 +347,7 @@ class MyAnalyticsController { // ); if (recentConstructUses.isNotEmpty) { - await analyticsRoom.sendConstructsEvent( + await analyticsRoom?.sendConstructsEvent( recentConstructUses, ); } diff --git a/lib/pangea/extensions/client_extension/client_analytics_extension.dart b/lib/pangea/extensions/client_extension/client_analytics_extension.dart index 396e09f8d..af43a7ba2 100644 --- a/lib/pangea/extensions/client_extension/client_analytics_extension.dart +++ b/lib/pangea/extensions/client_extension/client_analytics_extension.dart @@ -3,7 +3,7 @@ part of "client_extension.dart"; extension AnalyticsClientExtension on Client { /// Get the logged in user's analytics room matching /// a given langCode. If not present, create it. - Future _getMyAnalyticsRoom(String langCode) async { + Future _getMyAnalyticsRoom(String langCode) async { final Room? analyticsRoom = _analyticsRoomLocal(langCode); if (analyticsRoom != null) return analyticsRoom; return _makeAnalyticsRoom(langCode); @@ -35,7 +35,11 @@ extension AnalyticsClientExtension on Client { /// /// If the room does not appear immediately after creation, this method waits for it to appear in sync. /// Returns the created [Room] object. - Future _makeAnalyticsRoom(String langCode) async { + Future _makeAnalyticsRoom(String langCode) async { + if (userID == null || userID == BotName.byEnvironment) { + return null; + } + final String roomID = await createRoom( creationContent: { 'type': PangeaRoomTypes.analytics, diff --git a/lib/pangea/extensions/client_extension/client_extension.dart b/lib/pangea/extensions/client_extension/client_extension.dart index af66c7d1f..7af50d501 100644 --- a/lib/pangea/extensions/client_extension/client_extension.dart +++ b/lib/pangea/extensions/client_extension/client_extension.dart @@ -21,7 +21,7 @@ extension PangeaClient on Client { /// Get the logged in user's analytics room matching /// a given langCode. If not present, create it. - Future getMyAnalyticsRoom(String langCode) async => + Future getMyAnalyticsRoom(String langCode) async => await _getMyAnalyticsRoom(langCode); /// Get local analytics room for a given langCode and