(step, payload)
| 93 | } |
| 94 | |
| 95 | async function handleStepData(step, payload) { |
| 96 | switch (step) { |
| 97 | case 1: { |
| 98 | const updates = {}; |
| 99 | if (payload.oauthUrl) { |
| 100 | updates.oauthUrl = payload.oauthUrl; |
| 101 | broadcastDataUpdate({ oauthUrl: payload.oauthUrl }); |
| 102 | } |
| 103 | if (payload.sub2apiSessionId !== undefined) updates.sub2apiSessionId = payload.sub2apiSessionId || null; |
| 104 | if (payload.sub2apiOAuthState !== undefined) updates.sub2apiOAuthState = payload.sub2apiOAuthState || null; |
| 105 | if (payload.sub2apiGroupId !== undefined) updates.sub2apiGroupId = payload.sub2apiGroupId || null; |
| 106 | if (payload.sub2apiDraftName !== undefined) updates.sub2apiDraftName = payload.sub2apiDraftName || null; |
| 107 | if (Object.keys(updates).length) { |
| 108 | await setState(updates); |
| 109 | } |
| 110 | break; |
| 111 | } |
| 112 | case 2: |
| 113 | if (payload.email) { |
| 114 | await setEmailState(payload.email); |
| 115 | } |
| 116 | if (payload.skippedPasswordStep) { |
| 117 | const latestState = await getState(); |
| 118 | const step3Status = latestState.stepStatuses?.[3]; |
| 119 | if (step3Status !== 'running' && step3Status !== 'completed' && step3Status !== 'manual_completed') { |
| 120 | await setStepStatus(3, 'skipped'); |
| 121 | await addLog('步骤 2:提交邮箱后页面直接进入邮箱验证码页,已自动跳过步骤 3。', 'warn'); |
| 122 | } |
| 123 | } |
| 124 | break; |
| 125 | case 3: |
| 126 | if (payload.email) await setEmailState(payload.email); |
| 127 | if (payload.signupVerificationRequestedAt) { |
| 128 | await setState({ signupVerificationRequestedAt: payload.signupVerificationRequestedAt }); |
| 129 | } |
| 130 | if (payload.loginVerificationRequestedAt) { |
| 131 | await setState({ loginVerificationRequestedAt: payload.loginVerificationRequestedAt }); |
| 132 | } |
| 133 | break; |
| 134 | case 6: |
| 135 | if (payload.loginVerificationRequestedAt) { |
| 136 | await setState({ loginVerificationRequestedAt: payload.loginVerificationRequestedAt }); |
| 137 | } |
| 138 | break; |
| 139 | case 4: |
| 140 | await setState({ |
| 141 | lastEmailTimestamp: payload.emailTimestamp || null, |
| 142 | signupVerificationRequestedAt: null, |
| 143 | }); |
| 144 | break; |
| 145 | case 7: |
| 146 | await setState({ |
| 147 | lastEmailTimestamp: payload.emailTimestamp || null, |
| 148 | loginVerificationRequestedAt: null, |
| 149 | }); |
| 150 | break; |
| 151 | case 8: |
| 152 | if (payload.localhostUrl) { |
no test coverage detected