diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 64b07808..3858867a 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -3,7 +3,7 @@ FlutterDeepLinkingEnabled - + CADisableMinimumFrameDurationOnPhone CFBundleDevelopmentRegion diff --git a/lib/main.dart b/lib/main.dart index 6bd34cdc..cbdbcebd 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -181,47 +181,32 @@ class _AppState extends State { ); }; - @override void initState() { - super.initState(); - - FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true); - _appStateNotifier = AppStateNotifier.instance; - _router = createRouter(_appStateNotifier); - Future.delayed(const Duration(milliseconds: 1000), - () => setState(() => _appStateNotifier.stopShowingSplashImage())); - - _setupFirebaseMessaging(); - WidgetsBinding.instance.addPersistentFrameCallback((_) => initDeepLinks()); - } - @override void dispose() { - _linkSubscription?.cancel(); - super.dispose(); - } - Future initDeepLinks() async { _appLinks = AppLinks(); _linkSubscription = _appLinks.uriLinkStream.listen((uri) { - debugPrint('onAppLink: $uri'); - openAppLink(uri); + final bool isRecovered = StorageUtil().isRecovered; + if (isRecovered) openAppLink(uri); }); } - void openAppLink(Uri uri) { - log('openAppLink'); - log(uri.toString()); + final bool isRecovered = !StorageUtil().isRecovered; + if(isRecovered) return; + StorageUtil().isRecovered = false; + final String email = uri.queryParameters['email'] ?? ''; final String token = uri.queryParameters['token'] ?? ''; - log('Email: $email'); - log('Token: $token'); + final BuildContext context = StorageUtil().context!; + final Future Function(String, {Object? extra}) nav = context.push; + final bool isNotEmpty = email.isNotEmpty && token.isNotEmpty; + log('openAppLink: $uri'); + + if (isNotEmpty) nav('/forgotPassword', extra: {'email': email, 'token': token}); // Use the extracted email and token as needed // navigatorKey.currentState?.pushNamed('/forgotPassword', arguments: {'email': email, 'token': token}); - if (email.isNotEmpty && token.isNotEmpty) - StorageUtil().context?.push('/forgotPassword', extra: {'email': email, 'token': token}); } - void _setupFirebaseMessaging() async { FirebaseMessaging messaging = FirebaseMessaging.instance; RemoteMessage? initialMessage = await messaging.getInitialMessage(); @@ -261,8 +246,23 @@ class _AppState extends State { } - @override - Widget build(BuildContext context) { + @override void initState() { + super.initState(); + + FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true); + _appStateNotifier = AppStateNotifier.instance; + _router = createRouter(_appStateNotifier); + Future.delayed(const Duration(milliseconds: 1000), + () => setState(() => _appStateNotifier.stopShowingSplashImage())); + + _setupFirebaseMessaging(); + WidgetsBinding.instance.addPersistentFrameCallback((_) => initDeepLinks()); + } + @override void dispose() { + _linkSubscription?.cancel(); + super.dispose(); + } + @override Widget build(BuildContext context) { return MaterialApp.router( key: navigatorKey, title: 'FRE ACCESS HUB', diff --git a/lib/pages/forgot_password_page/forgot_password_screen.dart b/lib/pages/forgot_password_page/forgot_password_screen.dart index ea6a9343..a1f72e4c 100644 --- a/lib/pages/forgot_password_page/forgot_password_screen.dart +++ b/lib/pages/forgot_password_page/forgot_password_screen.dart @@ -5,6 +5,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_animate/flutter_animate.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:hub/flutter_flow/nav/nav.dart'; +import 'package:hub/shared/utils/storage_util.dart'; import '../../components/atomic_components/shared_components_atoms/atom_image_svg_theme.dart'; import '../../flutter_flow/flutter_flow_animations.dart'; @@ -111,6 +112,7 @@ class _ForgotPasswordScreenState extends State with Ticker ), onPressed: () async { context.pop(); + StorageUtil().isRecovered = true; }, ), title: Text( diff --git a/lib/shared/utils/storage_util.dart b/lib/shared/utils/storage_util.dart index fc783391..132521af 100644 --- a/lib/shared/utils/storage_util.dart +++ b/lib/shared/utils/storage_util.dart @@ -184,6 +184,12 @@ class StorageUtil { log('SQLiteStorageHelper: Initialization complete'); } + bool _isRecovered = true; + bool get isRecovered => _isRecovered; + set isRecovered(bool value) => _isRecovered = value; + + + bool _isFirstRun = true; bool get isFirstRun => _isFirstRun; set isFirstRun(bool value) {