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 @@ -50,6 +50,7 @@ +qrData: QRData, +openSecondaryQRAuth: () => Promise, +closeSecondaryQRAuth: () => void, + +isAuthorized: boolean, }; const SecondaryDeviceQRAuthContext: React.Context = @@ -57,6 +58,7 @@ qrData: null, openSecondaryQRAuth: async () => {}, closeSecondaryQRAuth: () => {}, + isAuthorized: false, }); function SecondaryDeviceQRAuthContextProvider(props: Props): React.Node { @@ -240,8 +242,14 @@ qrData, openSecondaryQRAuth, closeSecondaryQRAuth, + isAuthorized: socketState.isAuthorized ?? false, }), - [qrData, openSecondaryQRAuth, closeSecondaryQRAuth], + [ + qrData, + openSecondaryQRAuth, + closeSecondaryQRAuth, + socketState.isAuthorized, + ], ); return ( @@ -259,24 +267,27 @@ } function useSecondaryDeviceQRAuthURL(): ?string { - const { qrData, openSecondaryQRAuth, closeSecondaryQRAuth } = + const { qrData, openSecondaryQRAuth, closeSecondaryQRAuth, isAuthorized } = useSecondaryDeviceQRAuthContext(); React.useEffect(() => { - void openSecondaryQRAuth(); - return closeSecondaryQRAuth; - }, [closeSecondaryQRAuth, openSecondaryQRAuth]); + if (!isAuthorized) { + void openSecondaryQRAuth(); + return closeSecondaryQRAuth; + } + return undefined; + }, [closeSecondaryQRAuth, isAuthorized, openSecondaryQRAuth]); const { platform } = getConfig().platformDetails; const qrCodeURL = React.useMemo(() => { - if (!qrData) { + if (!qrData || isAuthorized) { return undefined; } const identityDeviceType = platformToIdentityDeviceType[platform]; return qrCodeLinkURL(qrData.aesKey, qrData.deviceID, identityDeviceType); - }, [platform, qrData]); + }, [isAuthorized, platform, qrData]); React.useEffect(() => { if (qrCodeURL) {