diff --git a/lib/reducers/master-reducer.js b/lib/reducers/master-reducer.js --- a/lib/reducers/master-reducer.js +++ b/lib/reducers/master-reducer.js @@ -15,6 +15,7 @@ import { reduceNotifPermissionAlertInfo } from './notif-permission-alert-info-reducer.js'; import policiesReducer from './policies-reducer.js'; import reduceReportStore from './report-store-reducer.js'; +import reduceServicesAccessToken from './services-access-token-reducer.js'; import { reduceThreadInfos } from './thread-reducer.js'; import reduceUpdatesCurrentAsOf from './updates-reducer.js'; import reduceURLPrefix from './url-prefix-reducer.js'; @@ -114,6 +115,10 @@ dataLoaded: reduceDataLoaded(state.dataLoaded, action), userPolicies: policiesReducer(state.userPolicies, action), deviceToken: reduceDeviceToken(state.deviceToken, action), + commServicesAccessToken: reduceServicesAccessToken( + state.commServicesAccessToken, + action, + ), }, storeOperations: { draftStoreOperations, diff --git a/lib/reducers/services-access-token-reducer.js b/lib/reducers/services-access-token-reducer.js new file mode 100644 --- /dev/null +++ b/lib/reducers/services-access-token-reducer.js @@ -0,0 +1,37 @@ +// @flow + +import { siweAuthActionTypes } from '../actions/siwe-actions.js'; +import { + logOutActionTypes, + deleteAccountActionTypes, + logInActionTypes, + registerActionTypes, +} from '../actions/user-actions.js'; +import type { BaseAction } from '../types/redux-types.js'; +import { setNewSessionActionType } from '../utils/action-utils.js'; + +export default function reduceServicesAccessToken( + state: ?string, + action: BaseAction, +): ?string { + if ( + action.type === logInActionTypes.success || + action.type === siweAuthActionTypes.success || + action.type === registerActionTypes.success + ) { + return null; + } else if ( + action.type === setNewSessionActionType && + action.payload.sessionChange.currentUserInfo && + action.payload.sessionChange.currentUserInfo.anonymous + ) { + return null; + } else if ( + action.type === logOutActionTypes.started || + action.type === logOutActionTypes.success || + action.type === deleteAccountActionTypes.success + ) { + return null; + } + return state; +}