From a322cb5ad2a8b904a530b77987a66fe3049375dd Mon Sep 17 00:00:00 2001 From: ggurdin <46800240+ggurdin@users.noreply.github.com> Date: Fri, 2 Jan 2026 15:23:37 -0500 Subject: [PATCH] fix: on analytics DB init, don't clear DB unless stored userID doesn't match client userID (#5036) --- lib/pangea/analytics_data/analytics_data_service.dart | 8 ++++++-- lib/pangea/analytics_data/analytics_database.dart | 11 +++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/lib/pangea/analytics_data/analytics_data_service.dart b/lib/pangea/analytics_data/analytics_data_service.dart index 4c0b44ff6..0f8adc798 100644 --- a/lib/pangea/analytics_data/analytics_data_service.dart +++ b/lib/pangea/analytics_data/analytics_data_service.dart @@ -120,7 +120,11 @@ class AnalyticsDataService { } _invalidateCaches(); - await _clearDatabase(); + final analyticsUserId = await _analyticsClientGetter.database.getUserID(); + if (analyticsUserId != client.userID) { + await _clearDatabase(); + await _analyticsClientGetter.database.updateUserID(client.userID!); + } final resp = await client.getUserProfile(client.userID!); final analyticsProfile = @@ -367,7 +371,7 @@ class AnalyticsDataService { final newConstructs = await getConstructUses(updateIds); int points = 0; - if (blocked.isEmpty || updateIds.isNotEmpty) { + if (update.blockedConstruct == null || updateIds.isNotEmpty) { for (final id in updateIds) { final prevPoints = prevConstructs[id]?.points ?? 0; final newPoints = newConstructs[id]?.points ?? 0; diff --git a/lib/pangea/analytics_data/analytics_database.dart b/lib/pangea/analytics_data/analytics_database.dart index 07259e835..836d4e0e5 100644 --- a/lib/pangea/analytics_data/analytics_database.dart +++ b/lib/pangea/analytics_data/analytics_database.dart @@ -175,6 +175,8 @@ class AnalyticsDatabase with DatabaseFileStorage { (ConstructTypeEnum.morph, false) => _aggregatedServerMorphConstructsBox, }; + Future getUserID() => _lastEventTimestampBox.get('user_id'); + Future getLastEventTimestamp() async { final timestampString = await _lastEventTimestampBox.get('last_event_timestamp'); @@ -482,6 +484,15 @@ class AnalyticsDatabase with DatabaseFileStorage { return combined.values.toList(); } + Future updateUserID(String userID) { + return _transaction(() async { + await _lastEventTimestampBox.put( + 'user_id', + userID, + ); + }); + } + Future updateXPOffset(int offset) { return _transaction(() async { final stats = await getDerivedStats();