notification page navigation

This commit is contained in:
ggurdin 2026-02-02 10:43:36 -05:00
parent 85c3ff3590
commit 138e0d93e5
No known key found for this signature in database
GPG key ID: A01CB41737CBB478
4 changed files with 44 additions and 8 deletions

View file

@ -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',

View file

@ -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<EnableNotifications> {
}
}
Future<void> _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<EnableNotifications> {
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<EnableNotifications> {
),
TextButton(
child: Text(L10n.of(context).skipForNow),
onPressed: () => context.go("/registration/course"),
onPressed: () => context.push("/registration/course"),
),
],
),

View file

@ -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,

View file

@ -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<SettingsNotifications> {
}
Future<void> 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#