feat: 增强注册流程,添加手机号输入框及相关状态管理逻辑

This commit is contained in:
QLHazyCoder
2026-05-04 17:09:43 +08:00
parent d7d0953a94
commit 6160f4640d
7 changed files with 282 additions and 1 deletions
+48
View File
@@ -102,6 +102,8 @@
setContributionMode,
setEmailState,
setEmailStateSilently,
setSignupPhoneState,
setSignupPhoneStateSilently,
setIcloudAliasPreservedState,
setIcloudAliasUsedState,
setLuckmailPurchaseDisabledState,
@@ -162,6 +164,20 @@
return '';
}
function resolveSignupPhonePayload(payload = {}) {
const directPhone = String(
payload?.signupPhoneNumber
|| payload?.phoneNumber
|| ''
).trim();
if (directPhone) {
return directPhone;
}
return String(payload?.accountIdentifierType || '').trim().toLowerCase() === 'phone'
? String(payload?.accountIdentifier || '').trim()
: '';
}
function isStepProtectedFromAutoSkip(status) {
return status === 'running'
|| status === 'completed'
@@ -337,6 +353,12 @@
if (payload.email) {
await setEmailState(payload.email);
}
{
const signupPhoneNumber = resolveSignupPhonePayload(payload);
if (signupPhoneNumber) {
await setSignupPhoneStateSilently(signupPhoneNumber);
}
}
if (payload.skipRegistrationFlow) {
const latestState = await getState();
for (const skipStep of [3, 4, 5]) {
@@ -361,6 +383,12 @@
break;
case 3:
if (payload.email) await setEmailState(payload.email);
{
const signupPhoneNumber = resolveSignupPhonePayload(payload);
if (signupPhoneNumber) {
await setSignupPhoneStateSilently(signupPhoneNumber);
}
}
if (payload.signupVerificationRequestedAt) {
await setState({ signupVerificationRequestedAt: payload.signupVerificationRequestedAt });
}
@@ -1168,6 +1196,26 @@
return { ok: true, email: message.payload.email };
}
case 'SET_SIGNUP_PHONE_STATE': {
const state = await getState();
if (isAutoRunLockedState(state)) {
throw new Error('自动流程运行中,当前不能手动修改注册手机号。');
}
const phoneNumber = resolveSignupPhonePayload(message.payload) || null;
await setSignupPhoneStateSilently(phoneNumber);
return { ok: true, phoneNumber };
}
case 'SAVE_SIGNUP_PHONE': {
const state = await getState();
if (isAutoRunLockedState(state)) {
throw new Error('自动流程运行中,当前不能手动修改注册手机号。');
}
const phoneNumber = resolveSignupPhonePayload(message.payload) || null;
await setSignupPhoneState(phoneNumber);
return { ok: true, phoneNumber };
}
case 'FETCH_GENERATED_EMAIL': {
clearStopRequest();
const state = await getState();