From 4a9e312cce9208e6a901a9d4d5494315499caa85 Mon Sep 17 00:00:00 2001 From: ggurdin Date: Wed, 11 Feb 2026 16:30:46 -0500 Subject: [PATCH] some fixes --- .../analytics_data/analytics_data_service.dart | 6 +----- .../analytics_sync_controller.dart | 4 ++-- .../analytics_update_dispatcher.dart | 6 ++---- lib/pangea/user/user_controller.dart | 16 +++++++++++++++- 4 files changed, 20 insertions(+), 12 deletions(-) diff --git a/lib/pangea/analytics_data/analytics_data_service.dart b/lib/pangea/analytics_data/analytics_data_service.dart index fea3203db..224c87f48 100644 --- a/lib/pangea/analytics_data/analytics_data_service.dart +++ b/lib/pangea/analytics_data/analytics_data_service.dart @@ -476,11 +476,9 @@ class AnalyticsDataService { return events; } - Future> updateServerAnalytics( + Future updateServerAnalytics( List events, ) async { - final List updates = []; - _invalidateCaches(); final blocked = blockedConstructs; for (final event in events) { @@ -493,8 +491,6 @@ class AnalyticsDataService { final totalXP = constructs.fold(0, (total, c) => total + c.points); await _analyticsClientGetter.database.updateTotalXP(totalXP); - updates.add(XPGainedEvent(0, null)); - return updates; } Future updateBlockedConstructs(ConstructIdentifier constructId) async { diff --git a/lib/pangea/analytics_data/analytics_sync_controller.dart b/lib/pangea/analytics_data/analytics_sync_controller.dart index 559db2ed0..2bd5e70b1 100644 --- a/lib/pangea/analytics_data/analytics_sync_controller.dart +++ b/lib/pangea/analytics_data/analytics_sync_controller.dart @@ -122,8 +122,8 @@ class AnalyticsSyncController { .where((id) => !prevRoomIds.contains(id)) .toList(); - for (final roomId in newRoomIds) { - dataService.updateDispatcher.sendActivityAnalyticsUpdate(roomId); + if (newRoomIds.isNotEmpty) { + dataService.updateDispatcher.sendActivityAnalyticsUpdate(null); } } } diff --git a/lib/pangea/analytics_data/analytics_update_dispatcher.dart b/lib/pangea/analytics_data/analytics_update_dispatcher.dart index c9e4736d0..c3e7a9e83 100644 --- a/lib/pangea/analytics_data/analytics_update_dispatcher.dart +++ b/lib/pangea/analytics_data/analytics_update_dispatcher.dart @@ -100,10 +100,8 @@ class AnalyticsUpdateDispatcher { Future sendServerAnalyticsUpdate( List events, ) async { - final updates = await dataService.updateServerAnalytics(events); - for (final event in updates) { - _dispatch(event); - } + await dataService.updateServerAnalytics(events); + sendEmptyAnalyticsUpdate(); } Future sendLocalAnalyticsUpdate(AnalyticsUpdate analyticsUpdate) async { diff --git a/lib/pangea/user/user_controller.dart b/lib/pangea/user/user_controller.dart index 5c8c66ce5..89483ff5c 100644 --- a/lib/pangea/user/user_controller.dart +++ b/lib/pangea/user/user_controller.dart @@ -57,10 +57,24 @@ class UserController { final profileData = client.accountData[ModelKey.userProfile]?.content; final Profile? fromAccountData = Profile.fromAccountData(profileData); - if (fromAccountData != null) { + if (fromAccountData != null && fromAccountData != _cachedProfile) { _cachedProfile = fromAccountData; if ((prevTargetLang != userL2) || (prevBaseLang != userL1)) { + if (userL1 == null || userL2 == null) { + // if either language is null, then we want to send a settings update instead of a language update + ErrorHandler.logError( + e: "One of the user languages is null. Sending settings update instead of language update.", + data: { + 'prevBaseLang': prevBaseLang?.langCode, + 'prevTargetLang': prevTargetLang?.langCode, + 'userL1': userL1?.langCode, + 'userL2': userL2?.langCode, + }, + ); + settingsUpdateStream.add(fromAccountData); + return; + } languageStream.add( LanguageUpdate( baseLang: userL1!,