diff --git a/lib/components/secondary-device-qr-auth-context-provider.react.js b/lib/components/secondary-device-qr-auth-context-provider.react.js --- a/lib/components/secondary-device-qr-auth-context-provider.react.js +++ b/lib/components/secondary-device-qr-auth-context-provider.react.js @@ -36,7 +36,7 @@ type Props = { +children: React.Node, - +onLogInError: (error: mixed) => void, + +onLogInError: (error: mixed, isUserDataRestoreError?: boolean) => void, +generateAESKey: () => Promise, +composeTunnelbrokerQRAuthMessage: ( encryptionKey: string, @@ -211,7 +211,7 @@ getMessageForException(e) ?? 'unknown error', new Set([logTypes.BACKUP, logTypes.ERROR]), ); - onLogInError(e); + onLogInError(e, true); } }, [addLog, onLogInError, userDataRestore], diff --git a/web/utils/qr-code-utils.js b/web/utils/qr-code-utils.js --- a/web/utils/qr-code-utils.js +++ b/web/utils/qr-code-utils.js @@ -60,10 +60,13 @@ return payload; } -function useHandleSecondaryDeviceLogInError(): (error: mixed) => void { +function useHandleSecondaryDeviceLogInError(): ( + error: mixed, + isUserDataRestoreError?: boolean, +) => void { const { pushModal } = useModalContext(); return React.useCallback( - (error: mixed) => { + (error: mixed, isUserDataRestoreError?: boolean) => { console.error('Secondary device log in error:', error); const messageForException = getMessageForException(error); if ( @@ -81,6 +84,9 @@ } else if (error instanceof BackupIsNewerError) { const message = getBackupIsNewerThanAppError(); pushModal({message}); + } else if (isUserDataRestoreError) { + // This is handled directly by the RestorationError component + return; } else { pushModal(Uhh... try again?); }