fix(step2): skip steps 3/4/5 when signup detects logged-in session
This commit is contained in:
@@ -151,6 +151,18 @@
|
|||||||
if (payload.email) {
|
if (payload.email) {
|
||||||
await setEmailState(payload.email);
|
await setEmailState(payload.email);
|
||||||
}
|
}
|
||||||
|
if (payload.skipRegistrationFlow) {
|
||||||
|
const latestState = await getState();
|
||||||
|
for (const skipStep of [3, 4, 5]) {
|
||||||
|
const status = latestState.stepStatuses?.[skipStep];
|
||||||
|
if (status === 'running' || status === 'completed' || status === 'manual_completed') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
await setStepStatus(skipStep, 'skipped');
|
||||||
|
}
|
||||||
|
await addLog('步骤 2:检测到当前已登录会话,已自动跳过步骤 3/4/5,流程将直接进入步骤 6。', 'warn');
|
||||||
|
break;
|
||||||
|
}
|
||||||
if (payload.skippedPasswordStep) {
|
if (payload.skippedPasswordStep) {
|
||||||
const latestState = await getState();
|
const latestState = await getState();
|
||||||
const step3Status = latestState.stepStatuses?.[3];
|
const step3Status = latestState.stepStatuses?.[3];
|
||||||
|
|||||||
@@ -151,6 +151,25 @@ test('message router does not overwrite a completed step 3 when step 2 is replay
|
|||||||
assert.deepStrictEqual(events.stepStatuses, []);
|
assert.deepStrictEqual(events.stepStatuses, []);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('message router skips steps 3/4/5 when step 2 detects already logged-in session', async () => {
|
||||||
|
const { router, events } = createRouter({
|
||||||
|
state: { stepStatuses: { 3: 'pending', 4: 'completed', 5: 'pending' } },
|
||||||
|
});
|
||||||
|
|
||||||
|
await router.handleStepData(2, {
|
||||||
|
email: 'user@example.com',
|
||||||
|
skipRegistrationFlow: true,
|
||||||
|
skippedPasswordStep: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
assert.deepStrictEqual(events.emailStates, ['user@example.com']);
|
||||||
|
assert.deepStrictEqual(events.stepStatuses, [
|
||||||
|
{ step: 3, status: 'skipped' },
|
||||||
|
{ step: 5, status: 'skipped' },
|
||||||
|
]);
|
||||||
|
assert.equal(events.logs[0]?.message, '步骤 2:检测到当前已登录会话,已自动跳过步骤 3/4/5,流程将直接进入步骤 6。');
|
||||||
|
});
|
||||||
|
|
||||||
test('message router finalizes step 3 before marking it completed', async () => {
|
test('message router finalizes step 3 before marking it completed', async () => {
|
||||||
const { router, events } = createRouter();
|
const { router, events } = createRouter();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user