diff --git a/lib/services/push_service.dart b/lib/services/push_service.dart index a3d9e7838..e74f35af9 100644 --- a/lib/services/push_service.dart +++ b/lib/services/push_service.dart @@ -1,5 +1,3 @@ -// @dart=2.9 - import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:logging/logging.dart'; @@ -21,7 +19,7 @@ class PushService { static final PushService instance = PushService._privateConstructor(); static final _logger = Logger("PushService"); - SharedPreferences _prefs; + late SharedPreferences _prefs; PushService._privateConstructor(); @@ -46,14 +44,15 @@ class PushService { } Future _configurePushToken() async { - final fcmToken = await FirebaseMessaging.instance.getToken(); + final String? fcmToken = await FirebaseMessaging.instance.getToken(); final shouldForceRefreshServerToken = DateTime.now().microsecondsSinceEpoch - (_prefs.getInt(kLastFCMTokenUpdationTime) ?? 0) > kFCMTokenUpdationIntervalInMicroSeconds; - if (_prefs.getString(kFCMPushToken) != fcmToken || - shouldForceRefreshServerToken) { - final apnsToken = await FirebaseMessaging.instance.getAPNSToken(); + if (fcmToken != null && + (_prefs.getString(kFCMPushToken) != fcmToken || + shouldForceRefreshServerToken)) { + final String? apnsToken = await FirebaseMessaging.instance.getAPNSToken(); try { _logger.info("Updating token on server"); await _setPushTokenOnServer(fcmToken, apnsToken); @@ -71,7 +70,10 @@ class PushService { } } - Future _setPushTokenOnServer(String fcmToken, String apnsToken) async { + Future _setPushTokenOnServer( + String fcmToken, + String? apnsToken, + ) async { await Network.instance.enteDio.post( "/push/token", data: { diff --git a/lib/ui/account/recovery_key_page.dart b/lib/ui/account/recovery_key_page.dart index 64522fd6f..0867bd2e2 100644 --- a/lib/ui/account/recovery_key_page.dart +++ b/lib/ui/account/recovery_key_page.dart @@ -65,6 +65,7 @@ class _RecoveryKeyPageState extends State { return Scaffold( appBar: widget.showProgressBar ? AppBar( + automaticallyImplyLeading: false, elevation: 0, title: Hero( tag: "recovery_key", @@ -97,6 +98,7 @@ class _RecoveryKeyPageState extends State { child: IntrinsicHeight( child: Column( mainAxisSize: MainAxisSize.max, + crossAxisAlignment: CrossAxisAlignment.start, children: [ widget.showAppBar ? const SizedBox.shrink() diff --git a/lib/ui/components/action_sheet_widget.dart b/lib/ui/components/action_sheet_widget.dart index 0158377ee..71e6a7a2e 100644 --- a/lib/ui/components/action_sheet_widget.dart +++ b/lib/ui/components/action_sheet_widget.dart @@ -14,37 +14,13 @@ enum ActionSheetType { iconOnly, } -Future showCommonActionSheet({ - required BuildContext context, - required List buttons, - required ActionSheetType actionSheetType, - bool isCheckIconGreen = false, - String? title, - String? body, -}) { - return showMaterialModalBottomSheet( - backgroundColor: Colors.transparent, - barrierColor: backdropFaintDark, - useRootNavigator: true, - context: context, - builder: (_) { - return ActionSheetWidget( - title: title, - body: body, - actionButtons: buttons, - actionSheetType: actionSheetType, - isCheckIconGreen: isCheckIconGreen, - ); - }, - isDismissible: false, - enableDrag: false, - ); -} - +///Returns null if dismissed Future showActionSheet({ required BuildContext context, required List buttons, required ActionSheetType actionSheetType, + bool enableDrag = true, + bool isDismissible = true, bool isCheckIconGreen = false, String? title, String? body, @@ -54,6 +30,8 @@ Future showActionSheet({ barrierColor: backdropFaintDark, useRootNavigator: true, context: context, + isDismissible: isDismissible, + enableDrag: enableDrag, builder: (_) { return ActionSheetWidget( title: title, @@ -63,8 +41,6 @@ Future showActionSheet({ isCheckIconGreen: isCheckIconGreen, ); }, - isDismissible: false, - enableDrag: false, ); } diff --git a/lib/ui/components/dialog_widget.dart b/lib/ui/components/dialog_widget.dart index 9c0f25c82..99790f2d0 100644 --- a/lib/ui/components/dialog_widget.dart +++ b/lib/ui/components/dialog_widget.dart @@ -9,14 +9,17 @@ import 'package:photos/ui/components/button_widget.dart'; import 'package:photos/ui/components/models/button_type.dart'; import 'package:photos/utils/separators_util.dart'; +///Will return null if dismissed by tapping outside Future showGenericErrorDialog({ required BuildContext context, + bool isDismissible = true, }) async { return showDialogWidget( context: context, title: "Error", icon: Icons.error_outline_outlined, body: "It looks like something went wrong. Please try again.", + isDismissible: isDismissible, buttons: const [ ButtonWidget( buttonType: ButtonType.secondary, @@ -27,6 +30,7 @@ Future showGenericErrorDialog({ ); } +///Will return null if dismissed by tapping outside Future showNewChoiceDialog({ required BuildContext context, required String title, @@ -41,6 +45,7 @@ Future showNewChoiceDialog({ FutureVoidCallback? secondButtonOnTap, bool isCritical = false, IconData? icon, + bool isDismissible = true, }) async { final buttons = [ ButtonWidget( @@ -64,18 +69,21 @@ Future showNewChoiceDialog({ body: body, buttons: buttons, icon: icon, + isDismissible: isDismissible, ); } +///Will return null if dismissed by tapping outside Future showDialogWidget({ required BuildContext context, required String title, String? body, required List buttons, IconData? icon, + bool isDismissible = true, }) { return showDialog( - barrierDismissible: false, + barrierDismissible: isDismissible, barrierColor: backdropFaintDark, context: context, builder: (context) {