diff --git a/assets/l10n/intl_en.arb b/assets/l10n/intl_en.arb index d6e672148..ab782a3eb 100644 --- a/assets/l10n/intl_en.arb +++ b/assets/l10n/intl_en.arb @@ -2416,6 +2416,9 @@ "sendTypingNotificationsDescription": "Other participants in a chat can see when you are typing a new message.", "sendReadReceiptsDescription": "Andere Teilnehmer in einem Chat kรถnnen sehen, ob du eine Nachricht gelesen hast.", "formattedMessages": "Formatted messages", - "formattedMessagesDescription": "Display rich message content like bold text using markdown." - + "formattedMessagesDescription": "Display rich message content like bold text using markdown.", + "verifyOtherUser": "๐Ÿ” Verify other user", + "verifyOtherUserDescription": "If you verify another user, you can be sure that you know who you are really writing to. ๐Ÿ’ช\n\nWhen you start a verification, you and the other user will see a popup in the app. There you will then see a series of emojis or numbers that you have to compare with each other.\n\nThe best way to do this is to meet up or start a video call. ๐Ÿ‘ญ", + "verifyOtherDevice": "๐Ÿ” Verify other device", + "verifyOtherDeviceDescription": "When you verify another device, those devices can exchange keys, increasing your overall security. ๐Ÿ’ช When you start a verification, a popup will appear in the app on both devices. There you will then see a series of emojis or numbers that you have to compare with each other. It's best to have both devices handy before you start the verification. ๐Ÿคณ" } \ No newline at end of file diff --git a/lib/pages/bootstrap/bootstrap_dialog.dart b/lib/pages/bootstrap/bootstrap_dialog.dart index 4f6972021..531e1373f 100644 --- a/lib/pages/bootstrap/bootstrap_dialog.dart +++ b/lib/pages/bootstrap/bootstrap_dialog.dart @@ -351,6 +351,16 @@ class BootstrapDialogState extends State { onPressed: _recoveryKeyInputLoading ? null : () async { + final consent = await showOkCancelAlertDialog( + context: context, + title: L10n.of(context)!.verifyOtherDevice, + message: L10n.of(context)! + .verifyOtherDeviceDescription, + okLabel: L10n.of(context)!.ok, + cancelLabel: L10n.of(context)!.cancel, + fullyCapitalizedForMaterial: false, + ); + if (consent != OkCancelResult.ok) return; final req = await showFutureLoadingDialog( context: context, future: () async { diff --git a/lib/pages/chat_encryption_settings/chat_encryption_settings.dart b/lib/pages/chat_encryption_settings/chat_encryption_settings.dart index c7aed03a3..559aa2063 100644 --- a/lib/pages/chat_encryption_settings/chat_encryption_settings.dart +++ b/lib/pages/chat_encryption_settings/chat_encryption_settings.dart @@ -70,6 +70,15 @@ class ChatEncryptionSettingsController extends State { } void startVerification() async { + final consent = await showOkCancelAlertDialog( + context: context, + title: L10n.of(context)!.verifyOtherUser, + message: L10n.of(context)!.verifyOtherUserDescription, + okLabel: L10n.of(context)!.ok, + cancelLabel: L10n.of(context)!.cancel, + fullyCapitalizedForMaterial: false, + ); + if (consent != OkCancelResult.ok) return; final req = await room.client.userDeviceKeys[room.directChatMatrixID]! .startVerification(); req.onUpdate = () { diff --git a/lib/pages/device_settings/device_settings.dart b/lib/pages/device_settings/device_settings.dart index 8e22dc3e4..d2eb96a42 100644 --- a/lib/pages/device_settings/device_settings.dart +++ b/lib/pages/device_settings/device_settings.dart @@ -92,6 +92,15 @@ class DevicesSettingsController extends State { } void verifyDeviceAction(Device device) async { + final consent = await showOkCancelAlertDialog( + context: context, + title: L10n.of(context)!.verifyOtherDevice, + message: L10n.of(context)!.verifyOtherDeviceDescription, + okLabel: L10n.of(context)!.ok, + cancelLabel: L10n.of(context)!.cancel, + fullyCapitalizedForMaterial: false, + ); + if (consent != OkCancelResult.ok) return; final req = await Matrix.of(context) .client .userDeviceKeys[Matrix.of(context).client.userID!]!