Page MenuHomePhabricator

D14033.diff
No OneTemporary

D14033.diff

diff --git a/lib/actions/user-actions.js b/lib/actions/user-actions.js
--- a/lib/actions/user-actions.js
+++ b/lib/actions/user-actions.js
@@ -35,7 +35,10 @@
permissionsAndAuthRelatedRequestTimeout,
callIdentityServiceTimeout,
} from '../shared/timeouts.js';
-import { usePeerToPeerCommunication } from '../tunnelbroker/peer-to-peer-context.js';
+import {
+ PeerToPeerContext,
+ usePeerToPeerCommunication,
+} from '../tunnelbroker/peer-to-peer-context.js';
import type {
LegacyLogInInfo,
LegacyLogInResult,
@@ -358,20 +361,24 @@
]);
}
-const secondaryDeviceLogOutOptions = Object.freeze({
- logOutType: 'secondary_device',
-});
-
-function useSecondaryDeviceLogOut(): () => Promise<LogOutResult> {
- const logOut = useLogOut(secondaryDeviceLogOutOptions);
-
+function useSendLogoutMessageToPrimaryDevice(
+ mandatory?: boolean = true,
+): () => Promise<void> {
const identityContext = React.useContext(IdentityClientContext);
if (!identityContext) {
throw new Error('Identity service client is not initialized');
}
- const { broadcastEphemeralMessage } = usePeerToPeerCommunication();
+ const peerToPeerContext = React.useContext(PeerToPeerContext);
return React.useCallback(async () => {
+ if (!peerToPeerContext) {
+ if (mandatory) {
+ throw new Error('PeerToPeerContext not set');
+ }
+ return;
+ }
+
+ const { broadcastEphemeralMessage } = peerToPeerContext;
const { identityClient, getAuthMetadata } = identityContext;
const authMetadata = await getAuthMetadata();
const { userID, deviceID } = authMetadata;
@@ -398,10 +405,23 @@
[recipient],
authMetadata,
);
+ }, [identityContext, peerToPeerContext, mandatory]);
+}
+
+const secondaryDeviceLogOutOptions = Object.freeze({
+ logOutType: 'secondary_device',
+});
+
+function useSecondaryDeviceLogOut(): () => Promise<LogOutResult> {
+ const logOut = useLogOut(secondaryDeviceLogOutOptions);
+ const sendLogoutMessage = useSendLogoutMessageToPrimaryDevice();
+
+ return React.useCallback(async () => {
+ await sendLogoutMessage();
// log out of identity service, keyserver and visually
return logOut();
- }, [identityContext, broadcastEphemeralMessage, logOut]);
+ }, [sendLogoutMessage, logOut]);
}
const claimUsernameActionTypes = Object.freeze({
diff --git a/lib/tunnelbroker/peer-to-peer-context.js b/lib/tunnelbroker/peer-to-peer-context.js
--- a/lib/tunnelbroker/peer-to-peer-context.js
+++ b/lib/tunnelbroker/peer-to-peer-context.js
@@ -447,4 +447,4 @@
return context;
}
-export { PeerToPeerProvider, usePeerToPeerCommunication };
+export { PeerToPeerContext, PeerToPeerProvider, usePeerToPeerCommunication };

File Metadata

Mime Type
text/plain
Expires
Sat, Nov 30, 11:44 AM (20 h, 57 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2600810
Default Alt Text
D14033.diff (2 KB)

Event Timeline