From 62c91d9dcc1f6a15b9d8c4542c712f0ed9881581 Mon Sep 17 00:00:00 2001 From: ggurdin Date: Wed, 11 Feb 2026 11:08:58 -0500 Subject: [PATCH] chore: update language / settings streams on account data sync update --- lib/pangea/user/user_controller.dart | 35 ++++++++++++++-------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/lib/pangea/user/user_controller.dart b/lib/pangea/user/user_controller.dart index da0196b64..5c8c66ce5 100644 --- a/lib/pangea/user/user_controller.dart +++ b/lib/pangea/user/user_controller.dart @@ -37,8 +37,8 @@ class LanguageUpdate { class UserController { final StreamController languageStream = StreamController.broadcast(); - final StreamController settingsUpdateStream = - StreamController.broadcast(); + final StreamController settingsUpdateStream = + StreamController.broadcast(); /// Cached version of the user profile, so it doesn't have /// to be read in from client's account data each time it is accessed. @@ -52,10 +52,26 @@ class UserController { matrix.Client get client => MatrixState.pangeaController.matrixState.client; void _onProfileUpdate(matrix.SyncUpdate sync) { + final prevTargetLang = userL2; + final prevBaseLang = userL1; + final profileData = client.accountData[ModelKey.userProfile]?.content; final Profile? fromAccountData = Profile.fromAccountData(profileData); if (fromAccountData != null) { _cachedProfile = fromAccountData; + + if ((prevTargetLang != userL2) || (prevBaseLang != userL1)) { + languageStream.add( + LanguageUpdate( + baseLang: userL1!, + targetLang: userL2!, + prevBaseLang: prevBaseLang, + prevTargetLang: prevTargetLang, + ), + ); + } else { + settingsUpdateStream.add(fromAccountData); + } } } @@ -92,8 +108,6 @@ class UserController { waitForDataInSync = false, }) async { await initialize(); - final prevTargetLang = userL2; - final prevBaseLang = userL1; final prevHash = profile.hashCode; final Profile updatedProfile = update(profile); @@ -103,19 +117,6 @@ class UserController { } await updatedProfile.saveProfileData(waitForDataInSync: waitForDataInSync); - - if ((prevTargetLang != userL2) || (prevBaseLang != userL1)) { - languageStream.add( - LanguageUpdate( - baseLang: userL1!, - targetLang: userL2!, - prevBaseLang: prevBaseLang, - prevTargetLang: prevTargetLang, - ), - ); - } else { - settingsUpdateStream.add(updatedProfile); - } } /// A completer for the profile model of a user.