diff --git a/lib/config/routes.dart b/lib/config/routes.dart index 5101c6469..833f54d04 100644 --- a/lib/config/routes.dart +++ b/lib/config/routes.dart @@ -66,6 +66,7 @@ import 'package:fluffychat/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog. import 'package:fluffychat/widgets/config_viewer.dart'; import 'package:fluffychat/widgets/layouts/empty_page.dart'; import 'package:fluffychat/widgets/layouts/two_column_layout.dart'; +import 'package:fluffychat/widgets/local_notifications_extension.dart'; import 'package:fluffychat/widgets/log_view.dart'; import 'package:fluffychat/widgets/matrix.dart'; import 'package:fluffychat/widgets/share_scaffold_dialog.dart'; @@ -216,6 +217,14 @@ abstract class AppRoutes { state, const EnableNotifications(), ), + redirect: (context, state) async { + final redirect = + await PAuthGaurd.onboardingRedirect(context, state); + if (redirect != null) return redirect; + final enabled = await Matrix.of(context).notificationsEnabled; + if (enabled) return "/registration/course"; + return null; + }, ), GoRoute( path: 'course', diff --git a/lib/pages/onboarding/enable_notificatons.dart b/lib/pages/onboarding/enable_notificatons.dart index dbd4f87ef..7b97bceb3 100644 --- a/lib/pages/onboarding/enable_notificatons.dart +++ b/lib/pages/onboarding/enable_notificatons.dart @@ -7,6 +7,7 @@ import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/pangea/authentication/p_logout.dart'; import 'package:fluffychat/pangea/common/utils/error_handler.dart'; import 'package:fluffychat/pangea/login/pages/pangea_login_scaffold.dart'; +import 'package:fluffychat/widgets/local_notifications_extension.dart'; import 'package:fluffychat/widgets/matrix.dart'; class EnableNotifications extends StatefulWidget { @@ -45,6 +46,24 @@ class EnabledNotificationsController extends State { } } + Future _requestNotificationPermission() async { + try { + await Matrix.of(context).requestPermission(); + } catch (e, s) { + final permisson = await Matrix.of(context).notificationsEnabled; + ErrorHandler.logError( + e: e, + s: s, + data: { + 'notification_permission': permisson, + }, + ); + } + if (mounted) { + context.push("/registration/course"); + } + } + @override Widget build(BuildContext context) { return PangeaLoginScaffold( @@ -92,7 +111,7 @@ class EnabledNotificationsController extends State { textAlign: TextAlign.center, ), ElevatedButton( - onPressed: null, + onPressed: _requestNotificationPermission, style: ElevatedButton.styleFrom( backgroundColor: Theme.of(context).colorScheme.primaryContainer, foregroundColor: @@ -107,7 +126,7 @@ class EnabledNotificationsController extends State { ), TextButton( child: Text(L10n.of(context).skipForNow), - onPressed: () => context.go("/registration/course"), + onPressed: () => context.push("/registration/course"), ), ], ), diff --git a/lib/pages/onboarding/space_code_onboarding_view.dart b/lib/pages/onboarding/space_code_onboarding_view.dart index 7fe4dcd89..bbd57d5eb 100644 --- a/lib/pages/onboarding/space_code_onboarding_view.dart +++ b/lib/pages/onboarding/space_code_onboarding_view.dart @@ -5,7 +5,6 @@ import 'package:matrix/matrix.dart'; import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/pages/onboarding/space_code_onboarding.dart'; -import 'package:fluffychat/pangea/authentication/p_logout.dart'; import 'package:fluffychat/pangea/login/pages/pangea_login_scaffold.dart'; class SpaceCodeOnboardingView extends StatelessWidget { @@ -27,10 +26,7 @@ class SpaceCodeOnboardingView extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ BackButton( - onPressed: () => pLogoutAction( - context, - bypassWarning: true, - ), + onPressed: Navigator.of(context).pop, ), const SizedBox( width: 40.0, diff --git a/lib/pages/settings_notifications/settings_notifications.dart b/lib/pages/settings_notifications/settings_notifications.dart index 4f592f490..17d15c5fb 100644 --- a/lib/pages/settings_notifications/settings_notifications.dart +++ b/lib/pages/settings_notifications/settings_notifications.dart @@ -8,6 +8,7 @@ import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/config/setting_keys.dart'; import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/pages/settings_notifications/push_rule_extensions.dart'; +import 'package:fluffychat/pangea/common/utils/error_handler.dart'; import 'package:fluffychat/utils/localized_exception_extension.dart'; import 'package:fluffychat/widgets/adaptive_dialogs/adaptive_dialog_action.dart'; import 'package:fluffychat/widgets/adaptive_dialogs/show_modal_action_popup.dart'; @@ -208,7 +209,18 @@ class SettingsNotificationsController extends State { } Future requestNotificationPermission() async { - await Matrix.of(context).requestPermission(); + try { + await Matrix.of(context).requestPermission(); + } catch (e, s) { + final permisson = await Matrix.of(context).notificationsEnabled; + ErrorHandler.logError( + e: e, + s: s, + data: { + 'notification_permission': permisson, + }, + ); + } if (mounted) setState(() {}); } // Pangea#