From 6f87545bf93fd529a498d21bb960377d5b64b46d Mon Sep 17 00:00:00 2001 From: ggurdin Date: Fri, 27 Jun 2025 14:12:29 -0400 Subject: [PATCH] fluffychat merge --- .../analytics_misc/put_analytics_controller.dart | 1 - .../common/controllers/pangea_controller.dart | 11 ++++++----- lib/pangea/guard/p_vguard.dart | 10 ++++++++-- lib/pangea/login/pages/login_or_signup_view.dart | 16 ++++++++++++---- 4 files changed, 26 insertions(+), 12 deletions(-) diff --git a/lib/pangea/analytics_misc/put_analytics_controller.dart b/lib/pangea/analytics_misc/put_analytics_controller.dart index 4197ff7d7..d2df860a8 100644 --- a/lib/pangea/analytics_misc/put_analytics_controller.dart +++ b/lib/pangea/analytics_misc/put_analytics_controller.dart @@ -80,7 +80,6 @@ class PutAnalyticsController extends BaseController { _analyticsStream = null; _languageStream?.cancel(); _languageStream = null; - _refreshAnalyticsIfOutdated(); clearMessagesSinceUpdate(); } diff --git a/lib/pangea/common/controllers/pangea_controller.dart b/lib/pangea/common/controllers/pangea_controller.dart index 69bc0e056..64a0f12d1 100644 --- a/lib/pangea/common/controllers/pangea_controller.dart +++ b/lib/pangea/common/controllers/pangea_controller.dart @@ -157,7 +157,7 @@ class PangeaController { } /// check user information if not found then redirect to Date of birth page - _handleLoginStateChange(LoginState state) { + _handleLoginStateChange(LoginState state, String? userID) { switch (state) { case LoginState.loggedOut: case LoginState.softLoggedOut: @@ -181,12 +181,12 @@ class PangeaController { Sentry.configureScope( (scope) => scope.setUser( SentryUser( - id: matrixState.client.userID, - name: matrixState.client.userID, + id: userID, + name: userID, ), ), ); - GoogleAnalytics.analyticsUserUpdate(matrixState.client.userID); + GoogleAnalytics.analyticsUserUpdate(userID); } Future resetAnalytics() async { @@ -197,8 +197,9 @@ class PangeaController { } void _subscribeToStreams() { + final userID = matrixState.client.userID; matrixState.client.onLoginStateChanged.stream - .listen(_handleLoginStateChange); + .listen((state) => _handleLoginStateChange(state, userID)); _setLanguageStream(); } diff --git a/lib/pangea/guard/p_vguard.dart b/lib/pangea/guard/p_vguard.dart index 17fe6b16d..72f7aa6e4 100644 --- a/lib/pangea/guard/p_vguard.dart +++ b/lib/pangea/guard/p_vguard.dart @@ -16,7 +16,10 @@ class PAuthGaurd { GoRouterState state, ) async { if (pController != null) { - if (Matrix.of(context).client.isLogged()) { + if (Matrix.of(context) + .widget + .clients + .any((client) => client.isLogged())) { final bool dobIsSet = await pController!.userController.isUserDataAvailableAndL2Set; return dobIsSet ? '/rooms' : '/user_age'; @@ -34,7 +37,10 @@ class PAuthGaurd { GoRouterState state, ) async { if (pController != null) { - if (!Matrix.of(context).client.isLogged()) { + if (!Matrix.of(context) + .widget + .clients + .any((client) => client.isLogged())) { return '/home'; } final bool dobIsSet = diff --git a/lib/pangea/login/pages/login_or_signup_view.dart b/lib/pangea/login/pages/login_or_signup_view.dart index 12cf57586..1b8dcd0d5 100644 --- a/lib/pangea/login/pages/login_or_signup_view.dart +++ b/lib/pangea/login/pages/login_or_signup_view.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; +import 'package:matrix/matrix.dart'; import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/pangea/common/config/environment.dart'; @@ -17,12 +18,17 @@ class LoginOrSignupView extends StatefulWidget { } class LoginOrSignupViewState extends State { + Client? client; List _overrides = []; @override void initState() { super.initState(); _loadOverrides(); + + Matrix.of(context).getLoginClient().then((c) { + if (mounted) setState(() => client = c); + }); } Future _loadOverrides() async { @@ -62,10 +68,12 @@ class LoginOrSignupViewState extends State { ), FullWidthButton( title: L10n.of(context).signIn, - onPressed: () => context.go( - '/home/login', - extra: Matrix.of(context).client, - ), + onPressed: client != null + ? () => context.go( + '/home/login', + extra: Matrix.of(context).client, + ) + : null, ), ], );