diff --git a/lib/l10n/arb/app_en.arb b/lib/l10n/arb/app_en.arb index 4c644f24f..e5cc9b7ab 100644 --- a/lib/l10n/arb/app_en.arb +++ b/lib/l10n/arb/app_en.arb @@ -331,5 +331,6 @@ "offlineModeWarning": "You have chosen to proceed without backups. Please take manual backups to make sure your codes are safe.", "showLargeIcons": "Show large icons", "shouldHideCode": "Hide codes", - "focusOnSearchBar": "Focus search on app start" + "focusOnSearchBar": "Focus search on app start", + "confirmUpdatingkey": "Are you sure you want to update the secret key?" } diff --git a/lib/onboarding/view/setup_enter_secret_key_page.dart b/lib/onboarding/view/setup_enter_secret_key_page.dart index 5276a1155..d7d8c11d2 100644 --- a/lib/onboarding/view/setup_enter_secret_key_page.dart +++ b/lib/onboarding/view/setup_enter_secret_key_page.dart @@ -1,5 +1,7 @@ import "package:ente_auth/l10n/l10n.dart"; import 'package:ente_auth/models/code.dart'; +import 'package:ente_auth/ui/components/buttons/button_widget.dart'; +import 'package:ente_auth/ui/components/models/button_result.dart'; import 'package:ente_auth/utils/dialog_util.dart'; import 'package:ente_auth/utils/totp_util.dart'; import "package:flutter/material.dart"; @@ -10,7 +12,8 @@ class SetupEnterSecretKeyPage extends StatefulWidget { SetupEnterSecretKeyPage({this.code, Key? key}) : super(key: key); @override - State createState() => _SetupEnterSecretKeyPageState(); + State createState() => + _SetupEnterSecretKeyPageState(); } class _SetupEnterSecretKeyPageState extends State { @@ -25,7 +28,8 @@ class _SetupEnterSecretKeyPageState extends State { text: widget.code != null ? safeDecode(widget.code!.issuer).trim() : null, ); _accountController = TextEditingController( - text: widget.code != null ? safeDecode(widget.code!.account).trim() : null, + text: + widget.code != null ? safeDecode(widget.code!.account).trim() : null, ); _secretController = TextEditingController( text: widget.code != null ? widget.code!.secret : null, @@ -110,7 +114,7 @@ class _SetupEnterSecretKeyPageState extends State { SizedBox( width: 400, child: OutlinedButton( - onPressed: () { + onPressed: () async { if ((_accountController.text.trim().isEmpty && _issuerController.text.trim().isEmpty) || _secretController.text.trim().isEmpty) { @@ -118,31 +122,45 @@ class _SetupEnterSecretKeyPageState extends State { if (_secretController.text.trim().isEmpty) { message = context.l10n.secretCanNotBeEmpty; } else { - message = context.l10n.bothIssuerAndAccountCanNotBeEmpty; + message = + context.l10n.bothIssuerAndAccountCanNotBeEmpty; } _showIncorrectDetailsDialog(context, message: message); return; } - try { - final account = _accountController.text.trim(); - final issuer = _issuerController.text.trim(); - final secret = _secretController.text.trim().replaceAll(' ', ''); - final Code newCode = widget.code == null - ? Code.fromAccountAndSecret( - account, - issuer, - secret, - ) - : widget.code!.copyWith( - account: account, - issuer: issuer, - secret: secret, - ); - // Verify the validity of the code - getOTP(newCode); - Navigator.of(context).pop(newCode); - } catch (e) { - _showIncorrectDetailsDialog(context); + ButtonResult? result = await showChoiceActionSheet( + context, + title: context.l10n.warning, + body: context.l10n.confirmUpdatingkey, + firstButtonLabel: context.l10n.yes, + secondButtonAction: ButtonAction.cancel, + secondButtonLabel: context.l10n.cancel, + ); + + if (result == null) return; + if (result.action == ButtonAction.first) { + try { + final account = _accountController.text.trim(); + final issuer = _issuerController.text.trim(); + final secret = + _secretController.text.trim().replaceAll(' ', ''); + final Code newCode = widget.code == null + ? Code.fromAccountAndSecret( + account, + issuer, + secret, + ) + : widget.code!.copyWith( + account: account, + issuer: issuer, + secret: secret, + ); + // Verify the validity of the code + getOTP(newCode); + Navigator.of(context).pop(newCode); + } catch (e) { + _showIncorrectDetailsDialog(context); + } } }, child: Padding( @@ -153,7 +171,7 @@ class _SetupEnterSecretKeyPageState extends State { child: Text(l10n.saveAction), ), ), - ) + ), ], ), ),