From ab3e1266e5cd0be296377e1467322fb42d0f0344 Mon Sep 17 00:00:00 2001 From: ggurdin <46800240+ggurdin@users.noreply.github.com> Date: Fri, 7 Mar 2025 10:30:39 -0500 Subject: [PATCH] 2006 target language information needs to be updated when users change (#2069) * chore: use short lang code in public profile * chore: update public profile each time analytics are updated to account for case of missed target language update --- .../analytics_misc/get_analytics_controller.dart | 11 +++++++---- lib/pangea/analytics_misc/level_display_name.dart | 2 +- lib/pangea/user/controllers/user_controller.dart | 7 ++----- lib/pangea/user/models/profile_model.dart | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/lib/pangea/analytics_misc/get_analytics_controller.dart b/lib/pangea/analytics_misc/get_analytics_controller.dart index dcd8f20a0..f9b787dfc 100644 --- a/lib/pangea/analytics_misc/get_analytics_controller.dart +++ b/lib/pangea/analytics_misc/get_analytics_controller.dart @@ -144,6 +144,13 @@ class GetAnalyticsController extends BaseController { if (oldLevel < constructListModel.level) _onLevelUp(); if (oldLevel > constructListModel.level) await _onLevelDown(oldLevel); _updateAnalyticsStream(origin: analyticsUpdate.origin); + // Update public profile each time that new analytics are added. + // If the level hasn't changed, this will not send an update to the server. + // Do this on all updates (not just on level updates) to account for cases + // of target language updates being missed (https://github.com/pangeachat/client/issues/2006) + _pangeaController.userController.updatePublicProfile( + level: constructListModel.level, + ); } void _updateAnalyticsStream({ @@ -152,10 +159,6 @@ class GetAnalyticsController extends BaseController { analyticsStream.add(AnalyticsStreamUpdate(origin: origin)); void _onLevelUp() { - _pangeaController.userController.updatePublicProfile( - level: constructListModel.level, - ); - setState({'level_up': constructListModel.level}); } diff --git a/lib/pangea/analytics_misc/level_display_name.dart b/lib/pangea/analytics_misc/level_display_name.dart index 98db46470..7cd0e5176 100644 --- a/lib/pangea/analytics_misc/level_display_name.dart +++ b/lib/pangea/analytics_misc/level_display_name.dart @@ -60,7 +60,7 @@ class LevelDisplayNameState extends State { children: [ if (_profile?.targetLanguage != null) Text( - _profile!.targetLanguage!.langCode.toUpperCase(), + _profile!.targetLanguage!.langCodeShort.toUpperCase(), style: TextStyle( fontWeight: FontWeight.bold, color: Theme.of(context).colorScheme.primary, diff --git a/lib/pangea/user/controllers/user_controller.dart b/lib/pangea/user/controllers/user_controller.dart index f50e5b835..07b8d73cf 100644 --- a/lib/pangea/user/controllers/user_controller.dart +++ b/lib/pangea/user/controllers/user_controller.dart @@ -178,8 +178,8 @@ class UserController extends BaseController { } Future updatePublicProfile({ + required int level, LanguageModel? targetLanguage, - int? level, }) async { targetLanguage ??= _pangeaController.languageController.userL2; if (targetLanguage == null || publicProfile == null) return; @@ -190,10 +190,7 @@ class UserController extends BaseController { } publicProfile!.targetLanguage = targetLanguage; - if (level != null) { - publicProfile!.setLevel(targetLanguage, level); - } - + publicProfile!.setLevel(targetLanguage, level); await _savePublicProfile(); } diff --git a/lib/pangea/user/models/profile_model.dart b/lib/pangea/user/models/profile_model.dart index 9c5252c43..4998b80c7 100644 --- a/lib/pangea/user/models/profile_model.dart +++ b/lib/pangea/user/models/profile_model.dart @@ -43,7 +43,7 @@ class PublicProfileModel { Map toJson() { final json = {}; if (targetLanguage != null) { - json[ModelKey.userTargetLanguage] = targetLanguage!.langCode; + json[ModelKey.userTargetLanguage] = targetLanguage!.langCodeShort; } final analytics = {};