/
tunnelbroker-utils.js
38 lines (31 loc) · 1.14 KB
/
tunnelbroker-utils.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// @flow
import * as React from 'react';
import type { ConnectionInitializationMessage } from 'lib/types/tunnelbroker/session-types.js';
import { commCoreModule } from '../native-modules.js';
import { useSelector } from '../redux/redux-utils.js';
function useTunnelbrokerInitMessage(): ?ConnectionInitializationMessage {
const [deviceID, setDeviceID] = React.useState<?string>();
const [userID, setUserID] = React.useState<?string>();
const accessToken = useSelector(state => state.commServicesAccessToken);
React.useEffect(() => {
void (async () => {
const { userID: identityUserID, deviceID: contentSigningKey } =
await commCoreModule.getCommServicesAuthMetadata();
setDeviceID(contentSigningKey);
setUserID(identityUserID);
})();
}, [accessToken]);
return React.useMemo(() => {
if (!deviceID || !accessToken || !userID) {
return null;
}
return ({
type: 'ConnectionInitializationMessage',
deviceID,
accessToken,
userID,
deviceType: 'mobile',
}: ConnectionInitializationMessage);
}, [accessToken, deviceID, userID]);
}
export { useTunnelbrokerInitMessage };