import RouteRequirement from '../util/route-requirements/RouteRequirement';
import Pages from '../data/enum/Pages';
import { MigrationState, MigrationErrorStateToString } from '../data/enum/MigrationState';
import { createPath } from '../util/routeUtils';
/**
* Bare bones user created, let's see if the user passed the security question state
*
* @type {RouteRequirement}
*/
export const passSecurityAnswerNotSet = new RouteRequirement(
'passSecurityAnswerNotSet',
[],
({ getState }) => getState().migration?.migrationState === MigrationState.SECURITY_ANSWER_SET,
({}, { redirect }) => redirect(Pages.MIGRATION_LOADING),
);
/**
* User confirmed & approved to get the legacy data
*
* @type {RouteRequirement}
*/
export const passLegacyUserLockAccepted = new RouteRequirement(
'passLegacyUserLockAccepted',
[],
({ getState }) =>
[MigrationState.LOCKING_LEGACY_MEMBER, MigrationState.LOADING_LEGACY_DATA].includes(
getState().migration?.migrationState,
),
// LEGACY_DATA_LOADED => MIGRATION_DATA_CHECK
({}, { redirect }) => redirect(Pages.MIGRATION_DATA_CHECK),
);
/**
* Legacy data loaded
*
* @type {RouteRequirement}
*/
export const passLegacyDataLoaded = new RouteRequirement(
'passLegacyDataLoaded',
[],
({ getState }) =>
[
MigrationState.LEGACY_DATA_LOADED,
MigrationState.IMPORTING,
MigrationState.COMPLETED,
].includes(getState().migration?.migrationState),
// LOAD_LEGACY_DATA_FAILED => MIGRATION_ERROR
({ getState }, { redirect }) => {
const migrationState = getState().migration?.migrationState;
if (Object.keys(MigrationErrorStateToString).includes(migrationState)) {
return redirect(createPath(Pages.MIGRATION_ERROR, { errorState: migrationState }));
}
return redirect(Pages.MIGRATION);
},
);