Page MenuHomePhorge

D12454.1765012647.diff
No OneTemporary

Size
2 KB
Referenced Files
None
Subscribers
None

D12454.1765012647.diff

diff --git a/lib/components/qr-auth-provider.react.js b/lib/components/qr-auth-provider.react.js
--- a/lib/components/qr-auth-provider.react.js
+++ b/lib/components/qr-auth-provider.react.js
@@ -64,6 +64,7 @@
const [qrData, setQRData] =
React.useState<?{ +deviceID: string, +aesKey: string }>();
const [primaryDeviceID, setPrimaryDeviceID] = React.useState<?string>();
+ const [qrAuthFinished, setQRAuthFinished] = React.useState(false);
const {
setUnauthorizedDeviceID,
@@ -86,6 +87,7 @@
setUnauthorizedDeviceID(ed25519);
setQRData({ deviceID: ed25519, aesKey: aesKeyAsHexString });
+ setQRAuthFinished(false);
} catch (err) {
console.error('Failed to generate QR Code:', err);
}
@@ -105,7 +107,12 @@
);
React.useEffect(() => {
- if (!qrData || !socketState.isAuthorized || !primaryDeviceID) {
+ if (
+ !qrData ||
+ !socketState.isAuthorized ||
+ !primaryDeviceID ||
+ qrAuthFinished
+ ) {
return;
}
@@ -119,7 +126,14 @@
payload: JSON.stringify(message),
});
})();
- }, [sendMessage, primaryDeviceID, qrData, composeMessage, socketState]);
+ }, [
+ sendMessage,
+ primaryDeviceID,
+ qrData,
+ composeMessage,
+ socketState,
+ qrAuthFinished,
+ ]);
const tunnelbrokerMessageListener = React.useCallback(
async (message: TunnelbrokerMessage) => {
@@ -163,6 +177,7 @@
backupDataKey,
backupLogDataKey,
});
+ setQRAuthFinished(true);
return;
}
@@ -181,17 +196,17 @@
setUnauthorizedDeviceID(null);
},
[
- setUnauthorizedDeviceID,
identityClient,
qrData?.aesKey,
performRegistration,
- performBackupRestore,
+ setUnauthorizedDeviceID,
processMessage,
+ performBackupRestore,
],
);
React.useEffect(() => {
- if (!qrData?.deviceID) {
+ if (!qrData?.deviceID || qrAuthFinished) {
return undefined;
}
@@ -204,8 +219,15 @@
removeListener,
tunnelbrokerMessageListener,
qrData?.deviceID,
+ qrAuthFinished,
]);
+ React.useEffect(() => {
+ if (qrAuthFinished) {
+ removeListener(tunnelbrokerMessageListener);
+ }
+ }, [qrAuthFinished, removeListener, tunnelbrokerMessageListener]);
+
const value = React.useMemo(
() => ({
qrData,

File Metadata

Mime Type
text/plain
Expires
Sat, Dec 6, 9:17 AM (6 h, 25 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5835559
Default Alt Text
D12454.1765012647.diff (2 KB)

Event Timeline