diff --git a/keyserver/src/responders/website-responders.js b/keyserver/src/responders/website-responders.js --- a/keyserver/src/responders/website-responders.js +++ b/keyserver/src/responders/website-responders.js @@ -48,7 +48,13 @@ import { promiseAll } from 'lib/utils/promises.js'; import { defaultNotifPermissionAlertInfo } from 'lib/utils/push-alerts.js'; import { infoFromURL } from 'lib/utils/url-utils.js'; -import { tBool, tNumber, tShape, tString } from 'lib/utils/validation-utils.js'; +import { + tBool, + tNumber, + tShape, + tString, + ashoatKeyserverID, +} from 'lib/utils/validation-utils.js'; import getTitle from 'web/title/getTitle.js'; import { navInfoValidator } from 'web/types/nav-types.js'; import { navInfoFromURL } from 'web/url-utils.js'; @@ -495,6 +501,15 @@ }; })(); + const keyserverStorePromise = (async () => { + const sessionID = await sessionIDPromise; + return { + keyserverInfos: { + [ashoatKeyserverID]: { cookie: undefined, sessionID }, + }, + }; + })(); + const { jsURL, fontsURL, @@ -596,7 +611,7 @@ commServicesAccessToken: null, inviteLinksStore: inviteLinksStorePromise, lastCommunicatedPlatformDetails: {}, - keyserverStore: { keyserverInfos: {} }, + keyserverStore: keyserverStorePromise, }); const validatedInitialReduxState = validateOutput( viewer.platformDetails, diff --git a/lib/types/keyserver-types.js b/lib/types/keyserver-types.js --- a/lib/types/keyserver-types.js +++ b/lib/types/keyserver-types.js @@ -9,6 +9,7 @@ // See https://linear.app/comm/issue/ENG-4347/stop-using-browser-cookies export type KeyserverInfo = { +cookie?: ?string, + +sessionID?: ?string, }; export type KeyserverStore = { @@ -18,6 +19,7 @@ export const keyserverInfoValidator: TInterface = tShape({ cookie: t.maybe(t.String), + sessionID: t.maybe(t.String), }); export const keyserverStoreValidator: TInterface = diff --git a/lib/utils/sanitization.js b/lib/utils/sanitization.js --- a/lib/utils/sanitization.js +++ b/lib/utils/sanitization.js @@ -295,14 +295,23 @@ state: AppState, redactionHelpers: RedactionHelpers, ): AppState { - const keyserverInfos = { ...state.keyserverStore.keyserverInfos }; - for (const key in keyserverInfos) { - if (keyserverInfos[key].cookie === undefined) { - continue; - } - keyserverInfos[key] = { ...keyserverInfos[key], cookie: null }; - } - const keyserverStore = { ...state.keyserverStore, keyserverInfos }; + const { keyserverInfos } = state.keyserverStore; + const keyserverInfosCopy = Object.fromEntries( + Object.keys(keyserverInfos).map(key => [ + key, + keyserverInfos[key].cookie === undefined + ? keyserverInfos[key] + : { + ...keyserverInfos[key], + cookie: null, + }, + ]), + ); + const keyserverStore = { + ...state.keyserverStore, + keyserverInfos: keyserverInfosCopy, + }; + state = { ...state, keyserverStore }; if (state.deviceToken !== undefined && state.deviceToken !== null) {