diff --git a/lib/reducers/keyserver-reducer.js b/lib/reducers/keyserver-reducer.js --- a/lib/reducers/keyserver-reducer.js +++ b/lib/reducers/keyserver-reducer.js @@ -4,16 +4,20 @@ import { reduceDeviceToken } from './device-token-reducer.js'; import reduceLastCommunicatedPlatformDetails from './last-communicated-platform-details-reducer.js'; import reduceUpdatesCurrentAsOf from './updates-reducer.js'; +import { addKeyserverActionType } from '../actions/keyserver-actions.js'; import { siweAuthActionTypes } from '../actions/siwe-actions.js'; import { logInActionTypes, resetUserStateActionType, + logOutActionTypes, + deleteAccountActionTypes, } from '../actions/user-actions.js'; import type { KeyserverStore } from '../types/keyserver-types'; import type { BaseAction } from '../types/redux-types.js'; import { fullStateSyncActionType, incrementalStateSyncActionType, + defaultConnectionInfo, } from '../types/socket-types.js'; import { processUpdatesActionType } from '../types/update-types.js'; import { setNewSessionActionType } from '../utils/action-utils.js'; @@ -24,8 +28,36 @@ state: KeyserverStore, action: BaseAction, ): KeyserverStore { - // this action is only dispatched on native - if (action.type === resetUserStateActionType) { + if ( + action.type === logOutActionTypes.success || + action.type === deleteAccountActionTypes.success || + (action.type === setNewSessionActionType && + action.payload.sessionChange.cookieInvalidated) + ) { + return { + keyserverInfos: { + [ashoatKeyserverID]: { + cookie: null, + updatesCurrentAsOf: 0, + urlPrefix: state.keyserverInfos[ashoatKeyserverID].urlPrefix, + connection: defaultConnectionInfo, + lastCommunicatedPlatformDetails: null, + deviceToken: null, + }, + }, + }; + } else if (action.type === addKeyserverActionType) { + return { + ...state, + keyserverInfos: { + ...state.keyserverInfos, + [action.payload.keyserverAdminUserID]: { + ...action.payload.newKeyserverInfo, + }, + }, + }; + } else if (action.type === resetUserStateActionType) { + // this action is only dispatched on native const stateCookie = state.keyserverInfos[ashoatKeyserverID]?.cookie; const cookie = stateCookie && stateCookie.startsWith('anonymous=') ? stateCookie : null;