diff --git a/lib/pangea/common/controllers/pangea_controller.dart b/lib/pangea/common/controllers/pangea_controller.dart index 64a0f12d1..7dc6e8e38 100644 --- a/lib/pangea/common/controllers/pangea_controller.dart +++ b/lib/pangea/common/controllers/pangea_controller.dart @@ -58,7 +58,7 @@ class PangeaController { int? randomint; PangeaController({required this.matrix, required this.matrixState}) { _setup(); - _subscribeToStreams(); + _setLanguageStream(); randomint = Random().nextInt(2000); } @@ -157,7 +157,7 @@ class PangeaController { } /// check user information if not found then redirect to Date of birth page - _handleLoginStateChange(LoginState state, String? userID) { + void handleLoginStateChange(LoginState state, String? userID) { switch (state) { case LoginState.loggedOut: case LoginState.softLoggedOut: @@ -173,6 +173,9 @@ class PangeaController { putAnalytics.initialize(); getAnalytics.initialize(); _setLanguageStream(); + + userController.reinitialize(); + subscriptionController.reinitialize(); break; } if (state != LoginState.loggedIn) { @@ -196,13 +199,6 @@ class PangeaController { await getAnalytics.initialize(); } - void _subscribeToStreams() { - final userID = matrixState.client.userID; - matrixState.client.onLoginStateChanged.stream - .listen((state) => _handleLoginStateChange(state, userID)); - _setLanguageStream(); - } - void _setLanguageStream() { _languageStream?.cancel(); _languageStream = userController.stateStream.listen((update) { diff --git a/lib/widgets/matrix.dart b/lib/widgets/matrix.dart index a3ada1957..7dd9eed11 100644 --- a/lib/widgets/matrix.dart +++ b/lib/widgets/matrix.dart @@ -178,6 +178,12 @@ class MatrixState extends State with WidgetsBindingObserver { .where((l) => l == LoginState.loggedIn) .first .then((_) { + // #Pangea + MatrixState.pangeaController.handleLoginStateChange( + LoginState.loggedIn, + _loginClientCandidate!.userID, + ); + // Pangea# if (!widget.clients.contains(_loginClientCandidate)) { widget.clients.add(_loginClientCandidate!); } @@ -312,6 +318,12 @@ class MatrixState extends State with WidgetsBindingObserver { }); onLoginStateChanged[name] ??= c.onLoginStateChanged.stream.listen((state) async { + // #Pangea + MatrixState.pangeaController.handleLoginStateChange( + state, + c.userID, + ); + // Pangea# final loggedInWithMultipleClients = widget.clients.length > 1; if (state == LoginState.loggedOut) { _cancelSubs(c.clientName); @@ -335,27 +347,8 @@ class MatrixState extends State with WidgetsBindingObserver { FluffyChatApp.router.go('/rooms'); } } else { - // #Pangea - if (state == LoginState.loggedIn) { - final futures = [ - pangeaController.userController.reinitialize(), - pangeaController.subscriptionController.reinitialize(), - ]; - await Future.wait(futures); - } - String routeDestination; - if (state == LoginState.loggedIn) { - routeDestination = - await pangeaController.userController.isUserDataAvailableAndL2Set - ? '/rooms' - : "/user_age"; - } else { - routeDestination = '/home'; - } - FluffyChatApp.router.go(routeDestination); - // FluffyChatApp.router - // .go(state == LoginState.loggedIn ? '/rooms' : '/home'); - // Pangea# + FluffyChatApp.router + .go(state == LoginState.loggedIn ? '/rooms' : '/home'); } }); onUiaRequest[name] ??= c.onUiaRequest.stream.listen(uiaRequestHandler);