diff --git a/_locales/en/messages.json b/_locales/en/messages.json index e14ea83df6..cc39f8a74c 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -381,6 +381,10 @@ "message": "Send Anyway", "description": "Used on a warning dialog to make it clear that it might be risky to send the message." }, + "callAnyway": { + "message": "Call Anyway", + "description": "Used on a warning dialog to make it clear that it might be risky to call the conversation." + }, "noLongerVerified": { "message": "Your safety number with $name$ has changed and is no longer verified. Click to show.", "description": "Shown in converation banner when user's safety number has changed, but they were previously verified.", diff --git a/js/views/conversation_view.js b/js/views/conversation_view.js index f50dc88258..b6183a2d41 100644 --- a/js/views/conversation_view.js +++ b/js/views/conversation_view.js @@ -393,19 +393,27 @@ onOutgoingAudioCallInConversation: async () => { const conversation = this.model; const isVideoCall = false; - await window.Signal.Services.calling.startOutgoingCall( - conversation, - isVideoCall - ); + + if (await this.isCallSafe()) { + await window.Signal.Services.calling.startOutgoingCall( + conversation, + isVideoCall + ); + } }, + onOutgoingVideoCallInConversation: async () => { const conversation = this.model; const isVideoCall = true; - await window.Signal.Services.calling.startOutgoingCall( - conversation, - isVideoCall - ); + + if (await this.isCallSafe()) { + await window.Signal.Services.calling.startOutgoingCall( + conversation, + isVideoCall + ); + } }, + onShowSafetyNumber: () => { this.showSafetyNumber(); }, @@ -2495,9 +2503,28 @@ } }, - showSendAnywayDialog(contacts) { + async isCallSafe() { + const contacts = await this.getUntrustedContacts(); + if (contacts && contacts.length) { + const callAnyway = await this.showSendAnywayDialog( + contacts, + i18n('callAnyway') + ); + if (!callAnyway) { + window.log.info( + 'Safety number change dialog not accepted, new call not allowed.' + ); + return false; + } + } + + return true; + }, + + showSendAnywayDialog(contacts, confirmText) { return new Promise(resolve => { const dialog = new Whisper.SafetyNumberChangeDialogView({ + confirmText, contacts, reject: () => { resolve(false); diff --git a/js/views/safety_number_change_dialog_view.js b/js/views/safety_number_change_dialog_view.js index a6cfcbb14b..ea756c6815 100644 --- a/js/views/safety_number_change_dialog_view.js +++ b/js/views/safety_number_change_dialog_view.js @@ -12,6 +12,7 @@ const dialog = new Whisper.ReactWrapperView({ Component: window.Signal.Components.SafetyNumberChangeDialog, props: { + confirmText: options.confirmText, contacts: options.contacts.map(contact => contact.cachedProps), i18n: window.i18n, onCancel: () => { diff --git a/ts/components/SafetyNumberChangeDialog.stories.tsx b/ts/components/SafetyNumberChangeDialog.stories.tsx index b17c9400e1..c44b8e371d 100644 --- a/ts/components/SafetyNumberChangeDialog.stories.tsx +++ b/ts/components/SafetyNumberChangeDialog.stories.tsx @@ -64,6 +64,21 @@ storiesOf('Components/SafetyNumberChangeDialog', module) /> ); }) + .add('Different Confirmation Text', () => { + return ( + { + action('renderSafetyNumber'); + return
This is a mock Safety Number View
; + }} + /> + ); + }) .add('Multi Contact Dialog', () => { return ( ; readonly i18n: LocalizerType; readonly onCancel: () => void; @@ -25,6 +26,7 @@ type SafetyDialogContentProps = Props & { }; const SafetyDialogContents = ({ + confirmText, contacts, i18n, onCancel, @@ -107,7 +109,7 @@ const SafetyDialogContents = ({ onClick={onConfirm} tabIndex={0} > - {i18n('sendMessageToContact')} + {confirmText || i18n('sendMessageToContact')} diff --git a/ts/util/lint/exceptions.json b/ts/util/lint/exceptions.json index 33db0febc2..6873f62664 100644 --- a/ts/util/lint/exceptions.json +++ b/ts/util/lint/exceptions.json @@ -825,7 +825,7 @@ "rule": "jQuery-$(", "path": "js/views/safety_number_change_dialog_view.js", "line": " this.$('.safety-number-change-dialog-wrapper').append(dialog.el);", - "lineNumber": 36, + "lineNumber": 37, "reasonCategory": "usageTrusted", "updated": "2020-06-23T06:48:06.829Z" }, @@ -833,7 +833,7 @@ "rule": "jQuery-append(", "path": "js/views/safety_number_change_dialog_view.js", "line": " this.$('.safety-number-change-dialog-wrapper').append(dialog.el);", - "lineNumber": 36, + "lineNumber": 37, "reasonCategory": "usageTrusted", "updated": "2020-06-23T06:48:06.829Z" },