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 @@ -244,6 +244,7 @@ calendarQuery, keyserverData, deviceTokenUpdateInput, + preRequestUserInfo, ...restLogInInfo } = keyserverAuthInfo; @@ -332,6 +333,7 @@ logInActionSource: keyserverAuthInfo.logInActionSource, notAcknowledgedPolicies: responses[ashoatKeyserverID].notAcknowledgedPolicies, + preRequestUserInfo, }; }; diff --git a/lib/reducers/calendar-filters-reducer.test.js b/lib/reducers/calendar-filters-reducer.test.js --- a/lib/reducers/calendar-filters-reducer.test.js +++ b/lib/reducers/calendar-filters-reducer.test.js @@ -179,6 +179,7 @@ const messageInfos: RawMessageInfo[] = []; const payload = { currentUserInfo: { id: '5', username: 'me' }, + preRequestUserInfo: { id: '5', username: 'me' }, threadInfos: {}, messagesResult: { currentAsOf: {}, diff --git a/lib/types/account-types.js b/lib/types/account-types.js --- a/lib/types/account-types.js +++ b/lib/types/account-types.js @@ -170,6 +170,7 @@ +updatesCurrentAsOf: { +[keyserverID: string]: number }, +logInActionSource: LogInActionSource, +notAcknowledgedPolicies?: ?$ReadOnlyArray, + +preRequestUserInfo: LoggedInUserInfo, }; type KeyserverRequestData = { @@ -185,6 +186,7 @@ +deviceTokenUpdateInput: DeviceTokenUpdateInput, +logInActionSource: LogInActionSource, +keyserverData: { +[keyserverID: string]: KeyserverRequestData }, + +preRequestUserInfo: LoggedInUserInfo, }; export type KeyserverAuthRequest = $ReadOnly<{ diff --git a/native/redux/redux-setup.js b/native/redux/redux-setup.js --- a/native/redux/redux-setup.js +++ b/native/redux/redux-setup.js @@ -11,6 +11,7 @@ logOutActionTypes, deleteKeyserverAccountActionTypes, logInActionTypes, + keyserverAuthActionTypes, } from 'lib/actions/user-actions.js'; import type { ThreadStoreOperation } from 'lib/ops/thread-store-ops.js'; import { threadStoreOpsHandlers } from 'lib/ops/thread-store-ops.js'; @@ -148,6 +149,12 @@ state, action.payload.currentUserInfo, action.payload.logInActionSource, + )) || + (action.type === keyserverAuthActionTypes.success && + invalidSessionRecovery( + state, + action.payload.preRequestUserInfo, + action.payload.logInActionSource, )) ) { return state;