diff --git a/lib/components/keyserver-connection-handler.js b/lib/components/keyserver-connection-handler.js --- a/lib/components/keyserver-connection-handler.js +++ b/lib/components/keyserver-connection-handler.js @@ -4,8 +4,12 @@ import * as React from 'react'; import { logOutActionTypes, useLogOut } from '../actions/user-actions.js'; -import { connectionSelector } from '../selectors/keyserver-selectors.js'; +import { + connectionSelector, + cookieSelector, +} from '../selectors/keyserver-selectors.js'; import { IdentityClientContext } from '../shared/identity-client-context.js'; +import { NotificationsSessionCreatorContext } from '../shared/notifications-session-creator-context.js'; import type { BaseSocketProps } from '../socket/socket.react.js'; import { useDispatchActionPromise } from '../utils/redux-promise-utils.js'; import { useSelector } from '../utils/redux-utils.js'; @@ -26,6 +30,7 @@ const hasConnectionIssue = useSelector( state => !!connectionSelector(keyserverID)(state)?.connectionIssue, ); + const cookie = useSelector(cookieSelector(keyserverID)); React.useEffect(() => { if (hasConnectionIssue) { @@ -38,6 +43,14 @@ )?.identityClient; invariant(identityClient, 'Identity client should be set'); + const notificationsSessionCreatorContext = React.useContext( + NotificationsSessionCreatorContext, + ); + invariant( + notificationsSessionCreatorContext, + 'Notifications session creator context should be set', + ); + React.useEffect(() => { if (!usingCommServicesAccessToken) { return; @@ -45,7 +58,15 @@ void (async () => { try { - await identityClient.getKeyserverKeys(keyserverID); + const keyserverKeys = + await identityClient.getKeyserverKeys(keyserverID); + + await notificationsSessionCreatorContext.notificationsSessionCreator( + cookie, + keyserverKeys.identityKeysBlob.notificationIdentityPublicKeys, + keyserverKeys.notifInitializationInfo, + keyserverID, + ); } catch (e) { console.log( `Error getting keys for keyserver with id ${keyserverID}`, @@ -53,7 +74,7 @@ ); } })(); - }, [keyserverID, identityClient]); + }, [keyserverID, identityClient, notificationsSessionCreatorContext, cookie]); if (keyserverID !== ashoatKeyserverID) { return null;