按接码开关裁剪 OpenAI 手机验证节点
This commit is contained in:
+37
-15
@@ -936,12 +936,33 @@ function buildResolvedStepDefinitionState(state = {}) {
|
|||||||
signupMethod: resolvedSignupMethod,
|
signupMethod: resolvedSignupMethod,
|
||||||
resolvedSignupMethod: resolvedSignupMethod,
|
resolvedSignupMethod: resolvedSignupMethod,
|
||||||
phoneSignupReloginAfterBindEmailEnabled: Boolean(state?.phoneSignupReloginAfterBindEmailEnabled),
|
phoneSignupReloginAfterBindEmailEnabled: Boolean(state?.phoneSignupReloginAfterBindEmailEnabled),
|
||||||
|
phoneVerificationEnabled: Boolean(
|
||||||
|
stepDefinitionOptions.phoneVerificationEnabled
|
||||||
|
?? capabilityState?.runtimeLocks?.phoneVerificationEnabled
|
||||||
|
?? state?.phoneVerificationEnabled
|
||||||
|
),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function getStepDefinitionsForState(state = {}) {
|
function getStepDefinitionsForState(state = {}) {
|
||||||
const resolvedState = buildResolvedStepDefinitionState(state);
|
const resolvedState = buildResolvedStepDefinitionState(state);
|
||||||
const rootScope = typeof self !== 'undefined' ? self : globalThis;
|
const rootScope = typeof self !== 'undefined' ? self : globalThis;
|
||||||
|
const applyPhoneVerificationStepVisibility = (definitions = []) => {
|
||||||
|
if (Boolean(resolvedState?.phoneVerificationEnabled)) {
|
||||||
|
return definitions;
|
||||||
|
}
|
||||||
|
const hiddenStepKeys = new Set([
|
||||||
|
'post-login-phone-verification',
|
||||||
|
'post-bound-email-phone-verification',
|
||||||
|
]);
|
||||||
|
return (Array.isArray(definitions) ? definitions : [])
|
||||||
|
.filter((definition) => !hiddenStepKeys.has(String(definition?.key || '').trim()))
|
||||||
|
.map((definition, index) => ({
|
||||||
|
...definition,
|
||||||
|
id: index + 1,
|
||||||
|
order: (index + 1) * 10,
|
||||||
|
}));
|
||||||
|
};
|
||||||
if (rootScope.MultiPageStepDefinitions?.getSteps) {
|
if (rootScope.MultiPageStepDefinitions?.getSteps) {
|
||||||
const defaultFlowId = typeof DEFAULT_ACTIVE_FLOW_ID === 'string' ? DEFAULT_ACTIVE_FLOW_ID : 'openai';
|
const defaultFlowId = typeof DEFAULT_ACTIVE_FLOW_ID === 'string' ? DEFAULT_ACTIVE_FLOW_ID : 'openai';
|
||||||
const activeFlowId = String(resolvedState?.activeFlowId || '').trim().toLowerCase() || defaultFlowId;
|
const activeFlowId = String(resolvedState?.activeFlowId || '').trim().toLowerCase() || defaultFlowId;
|
||||||
@@ -951,6 +972,7 @@ function getStepDefinitionsForState(state = {}) {
|
|||||||
plusPaymentMethod: normalizePlusPaymentMethod(resolvedState?.plusPaymentMethod),
|
plusPaymentMethod: normalizePlusPaymentMethod(resolvedState?.plusPaymentMethod),
|
||||||
plusAccountAccessStrategy: normalizePlusAccountAccessStrategy(resolvedState?.plusAccountAccessStrategy),
|
plusAccountAccessStrategy: normalizePlusAccountAccessStrategy(resolvedState?.plusAccountAccessStrategy),
|
||||||
signupMethod: getSignupMethodForStepDefinitions(resolvedState),
|
signupMethod: getSignupMethodForStepDefinitions(resolvedState),
|
||||||
|
phoneVerificationEnabled: Boolean(resolvedState?.phoneVerificationEnabled),
|
||||||
phoneSignupReloginAfterBindEmailEnabled: Boolean(resolvedState?.phoneSignupReloginAfterBindEmailEnabled),
|
phoneSignupReloginAfterBindEmailEnabled: Boolean(resolvedState?.phoneSignupReloginAfterBindEmailEnabled),
|
||||||
});
|
});
|
||||||
if (Array.isArray(definitions)) {
|
if (Array.isArray(definitions)) {
|
||||||
@@ -962,7 +984,7 @@ function getStepDefinitionsForState(state = {}) {
|
|||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
if (!Boolean(resolvedState?.plusModeEnabled)) {
|
if (!Boolean(resolvedState?.plusModeEnabled)) {
|
||||||
return NORMAL_STEP_DEFINITIONS;
|
return applyPhoneVerificationStepVisibility(NORMAL_STEP_DEFINITIONS);
|
||||||
}
|
}
|
||||||
const paymentMethod = normalizePlusPaymentMethod(resolvedState?.plusPaymentMethod);
|
const paymentMethod = normalizePlusPaymentMethod(resolvedState?.plusPaymentMethod);
|
||||||
const signupMethod = getSignupMethodForStepDefinitions(resolvedState);
|
const signupMethod = getSignupMethodForStepDefinitions(resolvedState);
|
||||||
@@ -972,58 +994,58 @@ function getStepDefinitionsForState(state = {}) {
|
|||||||
signupMethod === SIGNUP_METHOD_EMAIL
|
signupMethod === SIGNUP_METHOD_EMAIL
|
||||||
&& plusAccountAccessStrategy === PLUS_ACCOUNT_ACCESS_STRATEGY_SUB2API_CODEX_SESSION
|
&& plusAccountAccessStrategy === PLUS_ACCOUNT_ACCESS_STRATEGY_SUB2API_CODEX_SESSION
|
||||||
) {
|
) {
|
||||||
return PLUS_GPC_SUB2API_SESSION_STEP_DEFINITIONS;
|
return applyPhoneVerificationStepVisibility(PLUS_GPC_SUB2API_SESSION_STEP_DEFINITIONS);
|
||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
signupMethod === SIGNUP_METHOD_EMAIL
|
signupMethod === SIGNUP_METHOD_EMAIL
|
||||||
&& plusAccountAccessStrategy === PLUS_ACCOUNT_ACCESS_STRATEGY_CPA_CODEX_SESSION
|
&& plusAccountAccessStrategy === PLUS_ACCOUNT_ACCESS_STRATEGY_CPA_CODEX_SESSION
|
||||||
) {
|
) {
|
||||||
return PLUS_GPC_CPA_SESSION_STEP_DEFINITIONS;
|
return applyPhoneVerificationStepVisibility(PLUS_GPC_CPA_SESSION_STEP_DEFINITIONS);
|
||||||
}
|
}
|
||||||
return PLUS_GPC_STEP_DEFINITIONS;
|
return applyPhoneVerificationStepVisibility(PLUS_GPC_STEP_DEFINITIONS);
|
||||||
}
|
}
|
||||||
if (paymentMethod === PLUS_PAYMENT_METHOD_GOPAY) {
|
if (paymentMethod === PLUS_PAYMENT_METHOD_GOPAY) {
|
||||||
if (
|
if (
|
||||||
signupMethod === SIGNUP_METHOD_EMAIL
|
signupMethod === SIGNUP_METHOD_EMAIL
|
||||||
&& plusAccountAccessStrategy === PLUS_ACCOUNT_ACCESS_STRATEGY_SUB2API_CODEX_SESSION
|
&& plusAccountAccessStrategy === PLUS_ACCOUNT_ACCESS_STRATEGY_SUB2API_CODEX_SESSION
|
||||||
) {
|
) {
|
||||||
return PLUS_GOPAY_SUB2API_SESSION_STEP_DEFINITIONS;
|
return applyPhoneVerificationStepVisibility(PLUS_GOPAY_SUB2API_SESSION_STEP_DEFINITIONS);
|
||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
signupMethod === SIGNUP_METHOD_EMAIL
|
signupMethod === SIGNUP_METHOD_EMAIL
|
||||||
&& plusAccountAccessStrategy === PLUS_ACCOUNT_ACCESS_STRATEGY_CPA_CODEX_SESSION
|
&& plusAccountAccessStrategy === PLUS_ACCOUNT_ACCESS_STRATEGY_CPA_CODEX_SESSION
|
||||||
) {
|
) {
|
||||||
return PLUS_GOPAY_CPA_SESSION_STEP_DEFINITIONS;
|
return applyPhoneVerificationStepVisibility(PLUS_GOPAY_CPA_SESSION_STEP_DEFINITIONS);
|
||||||
}
|
}
|
||||||
return PLUS_GOPAY_STEP_DEFINITIONS;
|
return applyPhoneVerificationStepVisibility(PLUS_GOPAY_STEP_DEFINITIONS);
|
||||||
}
|
}
|
||||||
if (paymentMethod === PLUS_PAYMENT_METHOD_PAYPAL_HOSTED) {
|
if (paymentMethod === PLUS_PAYMENT_METHOD_PAYPAL_HOSTED) {
|
||||||
if (signupMethod === SIGNUP_METHOD_PHONE) {
|
if (signupMethod === SIGNUP_METHOD_PHONE) {
|
||||||
return Boolean(resolvedState?.phoneSignupReloginAfterBindEmailEnabled)
|
return applyPhoneVerificationStepVisibility(Boolean(resolvedState?.phoneSignupReloginAfterBindEmailEnabled)
|
||||||
? PLUS_PAYPAL_HOSTED_CHECKOUT_PHONE_BOUND_EMAIL_RELOGIN_STEP_DEFINITIONS
|
? PLUS_PAYPAL_HOSTED_CHECKOUT_PHONE_BOUND_EMAIL_RELOGIN_STEP_DEFINITIONS
|
||||||
: PLUS_PAYPAL_HOSTED_CHECKOUT_PHONE_STEP_DEFINITIONS;
|
: PLUS_PAYPAL_HOSTED_CHECKOUT_PHONE_STEP_DEFINITIONS);
|
||||||
}
|
}
|
||||||
if (plusAccountAccessStrategy === PLUS_ACCOUNT_ACCESS_STRATEGY_SUB2API_CODEX_SESSION) {
|
if (plusAccountAccessStrategy === PLUS_ACCOUNT_ACCESS_STRATEGY_SUB2API_CODEX_SESSION) {
|
||||||
return PLUS_PAYPAL_HOSTED_CHECKOUT_SUB2API_SESSION_STEP_DEFINITIONS;
|
return applyPhoneVerificationStepVisibility(PLUS_PAYPAL_HOSTED_CHECKOUT_SUB2API_SESSION_STEP_DEFINITIONS);
|
||||||
}
|
}
|
||||||
if (plusAccountAccessStrategy === PLUS_ACCOUNT_ACCESS_STRATEGY_CPA_CODEX_SESSION) {
|
if (plusAccountAccessStrategy === PLUS_ACCOUNT_ACCESS_STRATEGY_CPA_CODEX_SESSION) {
|
||||||
return PLUS_PAYPAL_HOSTED_CHECKOUT_CPA_SESSION_STEP_DEFINITIONS;
|
return applyPhoneVerificationStepVisibility(PLUS_PAYPAL_HOSTED_CHECKOUT_CPA_SESSION_STEP_DEFINITIONS);
|
||||||
}
|
}
|
||||||
return PLUS_PAYPAL_HOSTED_CHECKOUT_STEP_DEFINITIONS;
|
return applyPhoneVerificationStepVisibility(PLUS_PAYPAL_HOSTED_CHECKOUT_STEP_DEFINITIONS);
|
||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
signupMethod === SIGNUP_METHOD_EMAIL
|
signupMethod === SIGNUP_METHOD_EMAIL
|
||||||
&& plusAccountAccessStrategy === PLUS_ACCOUNT_ACCESS_STRATEGY_SUB2API_CODEX_SESSION
|
&& plusAccountAccessStrategy === PLUS_ACCOUNT_ACCESS_STRATEGY_SUB2API_CODEX_SESSION
|
||||||
) {
|
) {
|
||||||
return PLUS_PAYPAL_SUB2API_SESSION_STEP_DEFINITIONS;
|
return applyPhoneVerificationStepVisibility(PLUS_PAYPAL_SUB2API_SESSION_STEP_DEFINITIONS);
|
||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
signupMethod === SIGNUP_METHOD_EMAIL
|
signupMethod === SIGNUP_METHOD_EMAIL
|
||||||
&& plusAccountAccessStrategy === PLUS_ACCOUNT_ACCESS_STRATEGY_CPA_CODEX_SESSION
|
&& plusAccountAccessStrategy === PLUS_ACCOUNT_ACCESS_STRATEGY_CPA_CODEX_SESSION
|
||||||
) {
|
) {
|
||||||
return PLUS_PAYPAL_CPA_SESSION_STEP_DEFINITIONS;
|
return applyPhoneVerificationStepVisibility(PLUS_PAYPAL_CPA_SESSION_STEP_DEFINITIONS);
|
||||||
}
|
}
|
||||||
return PLUS_PAYPAL_STEP_DEFINITIONS;
|
return applyPhoneVerificationStepVisibility(PLUS_PAYPAL_STEP_DEFINITIONS);
|
||||||
}
|
}
|
||||||
|
|
||||||
function getStepIdsForState(state = {}) {
|
function getStepIdsForState(state = {}) {
|
||||||
|
|||||||
@@ -405,6 +405,7 @@
|
|||||||
targetId: effectiveTargetId,
|
targetId: effectiveTargetId,
|
||||||
plusAccountAccessStrategy: effectivePlusAccountAccessStrategy,
|
plusAccountAccessStrategy: effectivePlusAccountAccessStrategy,
|
||||||
plusModeEnabled: runtimeLocks.plusModeEnabled,
|
plusModeEnabled: runtimeLocks.plusModeEnabled,
|
||||||
|
phoneVerificationEnabled: runtimeLocks.phoneVerificationEnabled,
|
||||||
signupMethod: effectiveSignupMethod,
|
signupMethod: effectiveSignupMethod,
|
||||||
},
|
},
|
||||||
supportedPanelModes: supportedTargetIds,
|
supportedPanelModes: supportedTargetIds,
|
||||||
|
|||||||
@@ -3027,11 +3027,19 @@
|
|||||||
'paypal-hosted-review',
|
'paypal-hosted-review',
|
||||||
'gopay-subscription-confirm',
|
'gopay-subscription-confirm',
|
||||||
]);
|
]);
|
||||||
|
const POST_LOGIN_PHONE_VERIFICATION_STEP_KEYS = Object.freeze([
|
||||||
|
'post-login-phone-verification',
|
||||||
|
'post-bound-email-phone-verification',
|
||||||
|
]);
|
||||||
|
|
||||||
function omitPlusPaymentChainSteps(steps = []) {
|
function omitPlusPaymentChainSteps(steps = []) {
|
||||||
return steps.filter((step) => !PLUS_PAYMENT_CHAIN_STEP_KEYS.includes(String(step?.key || '').trim()));
|
return steps.filter((step) => !PLUS_PAYMENT_CHAIN_STEP_KEYS.includes(String(step?.key || '').trim()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function omitPostLoginPhoneVerificationSteps(steps = []) {
|
||||||
|
return steps.filter((step) => !POST_LOGIN_PHONE_VERIFICATION_STEP_KEYS.includes(String(step?.key || '').trim()));
|
||||||
|
}
|
||||||
|
|
||||||
function reindexModeStepDefinitions(steps = []) {
|
function reindexModeStepDefinitions(steps = []) {
|
||||||
return (Array.isArray(steps) ? steps : []).map((step, index) => ({
|
return (Array.isArray(steps) ? steps : []).map((step, index) => ({
|
||||||
...step,
|
...step,
|
||||||
@@ -3116,6 +3124,13 @@
|
|||||||
return Boolean(options?.phoneSignupReloginAfterBindEmailEnabled);
|
return Boolean(options?.phoneSignupReloginAfterBindEmailEnabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function isPhoneVerificationEnabled(options = {}) {
|
||||||
|
if (Object.prototype.hasOwnProperty.call(options || {}, 'phoneVerificationEnabled')) {
|
||||||
|
return Boolean(options.phoneVerificationEnabled);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
function normalizePlusAccountAccessStrategy(value = '') {
|
function normalizePlusAccountAccessStrategy(value = '') {
|
||||||
const normalized = String(value || '').trim().toLowerCase();
|
const normalized = String(value || '').trim().toLowerCase();
|
||||||
if (normalized === PLUS_ACCOUNT_ACCESS_STRATEGY_SUB2API_CODEX_SESSION) {
|
if (normalized === PLUS_ACCOUNT_ACCESS_STRATEGY_SUB2API_CODEX_SESSION) {
|
||||||
@@ -3206,6 +3221,9 @@
|
|||||||
) {
|
) {
|
||||||
steps = omitPlusPaymentChainSteps(steps);
|
steps = omitPlusPaymentChainSteps(steps);
|
||||||
}
|
}
|
||||||
|
if (!isPhoneVerificationEnabled(options)) {
|
||||||
|
steps = omitPostLoginPhoneVerificationSteps(steps);
|
||||||
|
}
|
||||||
return reindexModeStepDefinitions(steps);
|
return reindexModeStepDefinitions(steps);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -588,6 +588,7 @@ let currentPlusModeEnabled = false;
|
|||||||
let currentPlusPaymentMethod = DEFAULT_PLUS_PAYMENT_METHOD;
|
let currentPlusPaymentMethod = DEFAULT_PLUS_PAYMENT_METHOD;
|
||||||
let currentPlusAccountAccessStrategy = DEFAULT_PLUS_ACCOUNT_ACCESS_STRATEGY;
|
let currentPlusAccountAccessStrategy = DEFAULT_PLUS_ACCOUNT_ACCESS_STRATEGY;
|
||||||
let currentSignupMethod = DEFAULT_SIGNUP_METHOD;
|
let currentSignupMethod = DEFAULT_SIGNUP_METHOD;
|
||||||
|
let currentPhoneVerificationEnabled = false;
|
||||||
let currentPhoneSignupReloginAfterBindEmailEnabled = DEFAULT_PHONE_SIGNUP_RELOGIN_AFTER_BIND_EMAIL_ENABLED;
|
let currentPhoneSignupReloginAfterBindEmailEnabled = DEFAULT_PHONE_SIGNUP_RELOGIN_AFTER_BIND_EMAIL_ENABLED;
|
||||||
let currentStepDefinitionFlowId = DEFAULT_ACTIVE_FLOW_ID;
|
let currentStepDefinitionFlowId = DEFAULT_ACTIVE_FLOW_ID;
|
||||||
let phoneSignupReuseUiWasLocked = false;
|
let phoneSignupReuseUiWasLocked = false;
|
||||||
@@ -611,12 +612,14 @@ let stepDefinitions = getStepDefinitionsForMode(false, {
|
|||||||
plusPaymentMethod: currentPlusPaymentMethod,
|
plusPaymentMethod: currentPlusPaymentMethod,
|
||||||
plusAccountAccessStrategy: currentPlusAccountAccessStrategy,
|
plusAccountAccessStrategy: currentPlusAccountAccessStrategy,
|
||||||
signupMethod: currentSignupMethod,
|
signupMethod: currentSignupMethod,
|
||||||
|
phoneVerificationEnabled: currentPhoneVerificationEnabled,
|
||||||
phoneSignupReloginAfterBindEmailEnabled: currentPhoneSignupReloginAfterBindEmailEnabled,
|
phoneSignupReloginAfterBindEmailEnabled: currentPhoneSignupReloginAfterBindEmailEnabled,
|
||||||
});
|
});
|
||||||
let workflowNodes = getWorkflowNodesForMode(false, {
|
let workflowNodes = getWorkflowNodesForMode(false, {
|
||||||
plusPaymentMethod: currentPlusPaymentMethod,
|
plusPaymentMethod: currentPlusPaymentMethod,
|
||||||
plusAccountAccessStrategy: currentPlusAccountAccessStrategy,
|
plusAccountAccessStrategy: currentPlusAccountAccessStrategy,
|
||||||
signupMethod: currentSignupMethod,
|
signupMethod: currentSignupMethod,
|
||||||
|
phoneVerificationEnabled: currentPhoneVerificationEnabled,
|
||||||
phoneSignupReloginAfterBindEmailEnabled: currentPhoneSignupReloginAfterBindEmailEnabled,
|
phoneSignupReloginAfterBindEmailEnabled: currentPhoneSignupReloginAfterBindEmailEnabled,
|
||||||
});
|
});
|
||||||
let STEP_IDS = stepDefinitions.map((step) => Number(step.id)).filter(Number.isFinite);
|
let STEP_IDS = stepDefinitions.map((step) => Number(step.id)).filter(Number.isFinite);
|
||||||
@@ -883,6 +886,13 @@ function getStepDefinitionsForMode(plusModeEnabled = false, options = {}) {
|
|||||||
const rawSignupMethod = typeof options === 'string'
|
const rawSignupMethod = typeof options === 'string'
|
||||||
? currentSignupMethod
|
? currentSignupMethod
|
||||||
: (options.signupMethod || currentSignupMethod || DEFAULT_SIGNUP_METHOD);
|
: (options.signupMethod || currentSignupMethod || DEFAULT_SIGNUP_METHOD);
|
||||||
|
const phoneVerificationEnabled = typeof options === 'string'
|
||||||
|
? (typeof inputPhoneVerificationEnabled !== 'undefined' && inputPhoneVerificationEnabled
|
||||||
|
? Boolean(inputPhoneVerificationEnabled.checked)
|
||||||
|
: Boolean(typeof latestState !== 'undefined' ? latestState?.phoneVerificationEnabled : false))
|
||||||
|
: Boolean(options.phoneVerificationEnabled ?? (typeof inputPhoneVerificationEnabled !== 'undefined' && inputPhoneVerificationEnabled
|
||||||
|
? inputPhoneVerificationEnabled.checked
|
||||||
|
: (typeof latestState !== 'undefined' ? latestState?.phoneVerificationEnabled : false)));
|
||||||
const phoneSignupReloginAfterBindEmailEnabled = typeof options === 'string'
|
const phoneSignupReloginAfterBindEmailEnabled = typeof options === 'string'
|
||||||
? currentPhoneSignupReloginAfterBindEmailEnabled
|
? currentPhoneSignupReloginAfterBindEmailEnabled
|
||||||
: Boolean(options.phoneSignupReloginAfterBindEmailEnabled ?? currentPhoneSignupReloginAfterBindEmailEnabled);
|
: Boolean(options.phoneSignupReloginAfterBindEmailEnabled ?? currentPhoneSignupReloginAfterBindEmailEnabled);
|
||||||
@@ -898,6 +908,7 @@ function getStepDefinitionsForMode(plusModeEnabled = false, options = {}) {
|
|||||||
plusPaymentMethod: normalizePlusPaymentMethod(rawPaymentMethod),
|
plusPaymentMethod: normalizePlusPaymentMethod(rawPaymentMethod),
|
||||||
plusAccountAccessStrategy: normalizePlusAccountAccessStrategy(rawPlusAccountAccessStrategy),
|
plusAccountAccessStrategy: normalizePlusAccountAccessStrategy(rawPlusAccountAccessStrategy),
|
||||||
signupMethod: normalizeSignupMethod(rawSignupMethod),
|
signupMethod: normalizeSignupMethod(rawSignupMethod),
|
||||||
|
phoneVerificationEnabled,
|
||||||
phoneSignupReloginAfterBindEmailEnabled,
|
phoneSignupReloginAfterBindEmailEnabled,
|
||||||
accountContributionEnabled,
|
accountContributionEnabled,
|
||||||
}) || [])
|
}) || [])
|
||||||
@@ -922,6 +933,13 @@ function getWorkflowNodesForMode(plusModeEnabled = false, options = {}) {
|
|||||||
const rawSignupMethod = typeof options === 'string'
|
const rawSignupMethod = typeof options === 'string'
|
||||||
? currentSignupMethod
|
? currentSignupMethod
|
||||||
: (options.signupMethod || currentSignupMethod || DEFAULT_SIGNUP_METHOD);
|
: (options.signupMethod || currentSignupMethod || DEFAULT_SIGNUP_METHOD);
|
||||||
|
const phoneVerificationEnabled = typeof options === 'string'
|
||||||
|
? (typeof inputPhoneVerificationEnabled !== 'undefined' && inputPhoneVerificationEnabled
|
||||||
|
? Boolean(inputPhoneVerificationEnabled.checked)
|
||||||
|
: Boolean(typeof latestState !== 'undefined' ? latestState?.phoneVerificationEnabled : false))
|
||||||
|
: Boolean(options.phoneVerificationEnabled ?? (typeof inputPhoneVerificationEnabled !== 'undefined' && inputPhoneVerificationEnabled
|
||||||
|
? inputPhoneVerificationEnabled.checked
|
||||||
|
: (typeof latestState !== 'undefined' ? latestState?.phoneVerificationEnabled : false)));
|
||||||
const phoneSignupReloginAfterBindEmailEnabled = typeof options === 'string'
|
const phoneSignupReloginAfterBindEmailEnabled = typeof options === 'string'
|
||||||
? currentPhoneSignupReloginAfterBindEmailEnabled
|
? currentPhoneSignupReloginAfterBindEmailEnabled
|
||||||
: Boolean(options.phoneSignupReloginAfterBindEmailEnabled ?? currentPhoneSignupReloginAfterBindEmailEnabled);
|
: Boolean(options.phoneSignupReloginAfterBindEmailEnabled ?? currentPhoneSignupReloginAfterBindEmailEnabled);
|
||||||
@@ -937,6 +955,7 @@ function getWorkflowNodesForMode(plusModeEnabled = false, options = {}) {
|
|||||||
plusPaymentMethod: normalizePlusPaymentMethod(rawPaymentMethod),
|
plusPaymentMethod: normalizePlusPaymentMethod(rawPaymentMethod),
|
||||||
plusAccountAccessStrategy: normalizePlusAccountAccessStrategy(rawPlusAccountAccessStrategy),
|
plusAccountAccessStrategy: normalizePlusAccountAccessStrategy(rawPlusAccountAccessStrategy),
|
||||||
signupMethod: normalizeSignupMethod(rawSignupMethod),
|
signupMethod: normalizeSignupMethod(rawSignupMethod),
|
||||||
|
phoneVerificationEnabled,
|
||||||
phoneSignupReloginAfterBindEmailEnabled,
|
phoneSignupReloginAfterBindEmailEnabled,
|
||||||
accountContributionEnabled,
|
accountContributionEnabled,
|
||||||
});
|
});
|
||||||
@@ -1003,6 +1022,13 @@ function rebuildStepDefinitionState(plusModeEnabled = false, options = {}) {
|
|||||||
const rawSignupMethod = typeof options === 'string'
|
const rawSignupMethod = typeof options === 'string'
|
||||||
? currentSignupMethod
|
? currentSignupMethod
|
||||||
: (options.signupMethod || currentSignupMethod || DEFAULT_SIGNUP_METHOD);
|
: (options.signupMethod || currentSignupMethod || DEFAULT_SIGNUP_METHOD);
|
||||||
|
const phoneVerificationEnabled = typeof options === 'string'
|
||||||
|
? (typeof inputPhoneVerificationEnabled !== 'undefined' && inputPhoneVerificationEnabled
|
||||||
|
? Boolean(inputPhoneVerificationEnabled.checked)
|
||||||
|
: Boolean(typeof latestState !== 'undefined' ? latestState?.phoneVerificationEnabled : false))
|
||||||
|
: Boolean(options.phoneVerificationEnabled ?? (typeof inputPhoneVerificationEnabled !== 'undefined' && inputPhoneVerificationEnabled
|
||||||
|
? inputPhoneVerificationEnabled.checked
|
||||||
|
: (typeof latestState !== 'undefined' ? latestState?.phoneVerificationEnabled : false)));
|
||||||
const phoneSignupReloginAfterBindEmailEnabled = typeof options === 'string'
|
const phoneSignupReloginAfterBindEmailEnabled = typeof options === 'string'
|
||||||
? currentPhoneSignupReloginAfterBindEmailEnabled
|
? currentPhoneSignupReloginAfterBindEmailEnabled
|
||||||
: Boolean(options.phoneSignupReloginAfterBindEmailEnabled ?? currentPhoneSignupReloginAfterBindEmailEnabled);
|
: Boolean(options.phoneSignupReloginAfterBindEmailEnabled ?? currentPhoneSignupReloginAfterBindEmailEnabled);
|
||||||
@@ -1013,6 +1039,7 @@ function rebuildStepDefinitionState(plusModeEnabled = false, options = {}) {
|
|||||||
currentPlusPaymentMethod = normalizePlusPaymentMethod(rawPaymentMethod);
|
currentPlusPaymentMethod = normalizePlusPaymentMethod(rawPaymentMethod);
|
||||||
currentPlusAccountAccessStrategy = normalizePlusAccountAccessStrategy(rawPlusAccountAccessStrategy);
|
currentPlusAccountAccessStrategy = normalizePlusAccountAccessStrategy(rawPlusAccountAccessStrategy);
|
||||||
currentSignupMethod = normalizeSignupMethod(rawSignupMethod);
|
currentSignupMethod = normalizeSignupMethod(rawSignupMethod);
|
||||||
|
currentPhoneVerificationEnabled = Boolean(phoneVerificationEnabled);
|
||||||
currentPhoneSignupReloginAfterBindEmailEnabled = phoneSignupReloginAfterBindEmailEnabled;
|
currentPhoneSignupReloginAfterBindEmailEnabled = phoneSignupReloginAfterBindEmailEnabled;
|
||||||
const nextActiveFlowId = String(
|
const nextActiveFlowId = String(
|
||||||
options?.activeFlowId
|
options?.activeFlowId
|
||||||
@@ -1027,6 +1054,7 @@ function rebuildStepDefinitionState(plusModeEnabled = false, options = {}) {
|
|||||||
plusPaymentMethod: currentPlusPaymentMethod,
|
plusPaymentMethod: currentPlusPaymentMethod,
|
||||||
plusAccountAccessStrategy: currentPlusAccountAccessStrategy,
|
plusAccountAccessStrategy: currentPlusAccountAccessStrategy,
|
||||||
signupMethod: currentSignupMethod,
|
signupMethod: currentSignupMethod,
|
||||||
|
phoneVerificationEnabled,
|
||||||
phoneSignupReloginAfterBindEmailEnabled: currentPhoneSignupReloginAfterBindEmailEnabled,
|
phoneSignupReloginAfterBindEmailEnabled: currentPhoneSignupReloginAfterBindEmailEnabled,
|
||||||
accountContributionEnabled,
|
accountContributionEnabled,
|
||||||
});
|
});
|
||||||
@@ -1036,6 +1064,7 @@ function rebuildStepDefinitionState(plusModeEnabled = false, options = {}) {
|
|||||||
plusPaymentMethod: currentPlusPaymentMethod,
|
plusPaymentMethod: currentPlusPaymentMethod,
|
||||||
plusAccountAccessStrategy: currentPlusAccountAccessStrategy,
|
plusAccountAccessStrategy: currentPlusAccountAccessStrategy,
|
||||||
signupMethod: currentSignupMethod,
|
signupMethod: currentSignupMethod,
|
||||||
|
phoneVerificationEnabled,
|
||||||
phoneSignupReloginAfterBindEmailEnabled: currentPhoneSignupReloginAfterBindEmailEnabled,
|
phoneSignupReloginAfterBindEmailEnabled: currentPhoneSignupReloginAfterBindEmailEnabled,
|
||||||
accountContributionEnabled,
|
accountContributionEnabled,
|
||||||
})
|
})
|
||||||
@@ -9193,6 +9222,9 @@ function resolveStepDefinitionCapabilityState(state = latestState, options = {})
|
|||||||
),
|
),
|
||||||
signupMethod: capabilityState?.effectiveSignupMethod
|
signupMethod: capabilityState?.effectiveSignupMethod
|
||||||
|| normalizeSignupMethod((options?.signupMethod ?? nextState?.signupMethod) || DEFAULT_SIGNUP_METHOD),
|
|| normalizeSignupMethod((options?.signupMethod ?? nextState?.signupMethod) || DEFAULT_SIGNUP_METHOD),
|
||||||
|
phoneVerificationEnabled: capabilityState
|
||||||
|
? Boolean(capabilityState.runtimeLocks?.phoneVerificationEnabled)
|
||||||
|
: Boolean(nextState?.phoneVerificationEnabled),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -10850,6 +10882,9 @@ function syncStepDefinitionsForMode(plusModeEnabled = false, plusPaymentMethodOr
|
|||||||
|| defaultStrategy
|
|| defaultStrategy
|
||||||
);
|
);
|
||||||
const nextSignupMethod = normalizeSignupMethod(options.signupMethod || currentSignupMethod || DEFAULT_SIGNUP_METHOD);
|
const nextSignupMethod = normalizeSignupMethod(options.signupMethod || currentSignupMethod || DEFAULT_SIGNUP_METHOD);
|
||||||
|
const nextPhoneVerificationEnabled = Boolean(options.phoneVerificationEnabled ?? (typeof inputPhoneVerificationEnabled !== 'undefined' && inputPhoneVerificationEnabled
|
||||||
|
? inputPhoneVerificationEnabled.checked
|
||||||
|
: (typeof latestState !== 'undefined' ? latestState?.phoneVerificationEnabled : false)));
|
||||||
const nextPhoneSignupReloginAfterBindEmailEnabled = Boolean(
|
const nextPhoneSignupReloginAfterBindEmailEnabled = Boolean(
|
||||||
options.phoneSignupReloginAfterBindEmailEnabled
|
options.phoneSignupReloginAfterBindEmailEnabled
|
||||||
?? (typeof inputPhoneSignupReloginAfterBindEmail !== 'undefined' && inputPhoneSignupReloginAfterBindEmail
|
?? (typeof inputPhoneSignupReloginAfterBindEmail !== 'undefined' && inputPhoneSignupReloginAfterBindEmail
|
||||||
@@ -10877,6 +10912,7 @@ function syncStepDefinitionsForMode(plusModeEnabled = false, plusPaymentMethodOr
|
|||||||
plusPaymentMethod: nextPaymentMethod,
|
plusPaymentMethod: nextPaymentMethod,
|
||||||
plusAccountAccessStrategy: nextPlusAccountAccessStrategy,
|
plusAccountAccessStrategy: nextPlusAccountAccessStrategy,
|
||||||
signupMethod: nextSignupMethod,
|
signupMethod: nextSignupMethod,
|
||||||
|
phoneVerificationEnabled: nextPhoneVerificationEnabled,
|
||||||
phoneSignupReloginAfterBindEmailEnabled: nextPhoneSignupReloginAfterBindEmailEnabled,
|
phoneSignupReloginAfterBindEmailEnabled: nextPhoneSignupReloginAfterBindEmailEnabled,
|
||||||
});
|
});
|
||||||
const paymentTitleChanged = Boolean(nextPlusModeEnabled && currentPaymentStep && nextPaymentTitle && currentPaymentStep.title !== nextPaymentTitle);
|
const paymentTitleChanged = Boolean(nextPlusModeEnabled && currentPaymentStep && nextPaymentTitle && currentPaymentStep.title !== nextPaymentTitle);
|
||||||
@@ -10885,6 +10921,7 @@ function syncStepDefinitionsForMode(plusModeEnabled = false, plusPaymentMethodOr
|
|||||||
|| nextPaymentMethod !== currentPlusPaymentMethod
|
|| nextPaymentMethod !== currentPlusPaymentMethod
|
||||||
|| nextPlusAccountAccessStrategy !== currentPlusAccountAccessStrategy
|
|| nextPlusAccountAccessStrategy !== currentPlusAccountAccessStrategy
|
||||||
|| nextSignupMethod !== currentSignupMethod
|
|| nextSignupMethod !== currentSignupMethod
|
||||||
|
|| nextPhoneVerificationEnabled !== currentPhoneVerificationEnabled
|
||||||
|| nextPhoneSignupReloginAfterBindEmailEnabled !== currentPhoneSignupReloginAfterBindEmailEnabled
|
|| nextPhoneSignupReloginAfterBindEmailEnabled !== currentPhoneSignupReloginAfterBindEmailEnabled
|
||||||
|| nextAccountContributionEnabled !== Boolean(typeof latestState !== 'undefined' ? latestState?.accountContributionEnabled : false)
|
|| nextAccountContributionEnabled !== Boolean(typeof latestState !== 'undefined' ? latestState?.accountContributionEnabled : false)
|
||||||
|| nextActiveFlowId !== currentFlowId
|
|| nextActiveFlowId !== currentFlowId
|
||||||
@@ -10898,6 +10935,7 @@ function syncStepDefinitionsForMode(plusModeEnabled = false, plusPaymentMethodOr
|
|||||||
plusPaymentMethod: nextPaymentMethod,
|
plusPaymentMethod: nextPaymentMethod,
|
||||||
plusAccountAccessStrategy: nextPlusAccountAccessStrategy,
|
plusAccountAccessStrategy: nextPlusAccountAccessStrategy,
|
||||||
signupMethod: nextSignupMethod,
|
signupMethod: nextSignupMethod,
|
||||||
|
phoneVerificationEnabled: nextPhoneVerificationEnabled,
|
||||||
phoneSignupReloginAfterBindEmailEnabled: nextPhoneSignupReloginAfterBindEmailEnabled,
|
phoneSignupReloginAfterBindEmailEnabled: nextPhoneSignupReloginAfterBindEmailEnabled,
|
||||||
accountContributionEnabled: nextAccountContributionEnabled,
|
accountContributionEnabled: nextAccountContributionEnabled,
|
||||||
});
|
});
|
||||||
@@ -10925,6 +10963,7 @@ function syncStepDefinitionsFromUiState(stateOverrides = {}) {
|
|||||||
plusPaymentMethod: getSelectedPlusPaymentMethod(nextState),
|
plusPaymentMethod: getSelectedPlusPaymentMethod(nextState),
|
||||||
plusAccountAccessStrategy: stepDefinitionState.plusAccountAccessStrategy,
|
plusAccountAccessStrategy: stepDefinitionState.plusAccountAccessStrategy,
|
||||||
signupMethod: stepDefinitionState.signupMethod,
|
signupMethod: stepDefinitionState.signupMethod,
|
||||||
|
phoneVerificationEnabled: Boolean(stepDefinitionState.phoneVerificationEnabled),
|
||||||
phoneSignupReloginAfterBindEmailEnabled: Boolean(nextState?.phoneSignupReloginAfterBindEmailEnabled),
|
phoneSignupReloginAfterBindEmailEnabled: Boolean(nextState?.phoneSignupReloginAfterBindEmailEnabled),
|
||||||
accountContributionEnabled: Boolean(nextState?.accountContributionEnabled),
|
accountContributionEnabled: Boolean(nextState?.accountContributionEnabled),
|
||||||
});
|
});
|
||||||
@@ -10949,6 +10988,7 @@ function applySettingsState(state) {
|
|||||||
activeFlowId: state?.activeFlowId || state?.flowId,
|
activeFlowId: state?.activeFlowId || state?.flowId,
|
||||||
plusPaymentMethod: state?.plusPaymentMethod,
|
plusPaymentMethod: state?.plusPaymentMethod,
|
||||||
signupMethod: stepDefinitionState.signupMethod,
|
signupMethod: stepDefinitionState.signupMethod,
|
||||||
|
phoneVerificationEnabled: Boolean(stepDefinitionState.phoneVerificationEnabled),
|
||||||
phoneSignupReloginAfterBindEmailEnabled: Boolean(state?.phoneSignupReloginAfterBindEmailEnabled),
|
phoneSignupReloginAfterBindEmailEnabled: Boolean(state?.phoneSignupReloginAfterBindEmailEnabled),
|
||||||
accountContributionEnabled: Boolean(state?.accountContributionEnabled),
|
accountContributionEnabled: Boolean(state?.accountContributionEnabled),
|
||||||
});
|
});
|
||||||
@@ -16705,6 +16745,10 @@ inputPhoneVerificationEnabled?.addEventListener('change', () => {
|
|||||||
updatePhoneVerificationSettingsUI();
|
updatePhoneVerificationSettingsUI();
|
||||||
showToast('已切回邮箱注册', 'info', 1600);
|
showToast('已切回邮箱注册', 'info', 1600);
|
||||||
}
|
}
|
||||||
|
syncStepDefinitionsFromUiState({
|
||||||
|
phoneVerificationEnabled: Boolean(inputPhoneVerificationEnabled.checked),
|
||||||
|
signupMethod: getSelectedSignupMethod(),
|
||||||
|
});
|
||||||
markSettingsDirty(true);
|
markSettingsDirty(true);
|
||||||
saveSettings({ silent: true }).catch(() => { });
|
saveSettings({ silent: true }).catch(() => { });
|
||||||
});
|
});
|
||||||
@@ -17990,6 +18034,14 @@ chrome.runtime.onMessage.addListener((message, _sender, sendResponse) => {
|
|||||||
}
|
}
|
||||||
if (message.payload.phoneVerificationEnabled !== undefined || message.payload.signupMethod !== undefined) {
|
if (message.payload.phoneVerificationEnabled !== undefined || message.payload.signupMethod !== undefined) {
|
||||||
updatePhoneVerificationSettingsUI();
|
updatePhoneVerificationSettingsUI();
|
||||||
|
syncStepDefinitionsFromUiState({
|
||||||
|
phoneVerificationEnabled: inputPhoneVerificationEnabled
|
||||||
|
? Boolean(inputPhoneVerificationEnabled.checked)
|
||||||
|
: Boolean(latestState?.phoneVerificationEnabled),
|
||||||
|
signupMethod: typeof getSelectedSignupMethod === 'function'
|
||||||
|
? getSelectedSignupMethod()
|
||||||
|
: latestState?.signupMethod,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
const activePhoneSmsProvider = normalizePhoneSmsProviderValue(
|
const activePhoneSmsProvider = normalizePhoneSmsProviderValue(
|
||||||
message.payload.phoneSmsProvider !== undefined
|
message.payload.phoneSmsProvider !== undefined
|
||||||
|
|||||||
@@ -188,6 +188,7 @@ return {
|
|||||||
plusPaymentMethod: 'gopay',
|
plusPaymentMethod: 'gopay',
|
||||||
plusAccountAccessStrategy: 'oauth',
|
plusAccountAccessStrategy: 'oauth',
|
||||||
signupMethod: 'phone',
|
signupMethod: 'phone',
|
||||||
|
phoneVerificationEnabled: false,
|
||||||
phoneSignupReloginAfterBindEmailEnabled: false,
|
phoneSignupReloginAfterBindEmailEnabled: false,
|
||||||
}]);
|
}]);
|
||||||
assert.equal(steps[0].title, '注册并输入手机号');
|
assert.equal(steps[0].title, '注册并输入手机号');
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ test('flow capability registry keeps OpenAI phone signup available only when run
|
|||||||
assert.equal(enabledState.effectiveSignupMethod, 'phone');
|
assert.equal(enabledState.effectiveSignupMethod, 'phone');
|
||||||
assert.equal(enabledState.shouldWarnCpaPhoneSignup, true);
|
assert.equal(enabledState.shouldWarnCpaPhoneSignup, true);
|
||||||
assert.equal(enabledState.targetCapabilities.usesOauthTimeoutBudget, true);
|
assert.equal(enabledState.targetCapabilities.usesOauthTimeoutBudget, true);
|
||||||
|
assert.equal(enabledState.stepDefinitionOptions.phoneVerificationEnabled, true);
|
||||||
assert.deepEqual(enabledState.effectiveSignupMethods, ['email', 'phone']);
|
assert.deepEqual(enabledState.effectiveSignupMethods, ['email', 'phone']);
|
||||||
|
|
||||||
const plusLockedState = registry.resolveSidepanelCapabilities({
|
const plusLockedState = registry.resolveSidepanelCapabilities({
|
||||||
@@ -43,6 +44,7 @@ test('flow capability registry keeps OpenAI phone signup available only when run
|
|||||||
|
|
||||||
assert.equal(plusLockedState.canUsePhoneSignup, false);
|
assert.equal(plusLockedState.canUsePhoneSignup, false);
|
||||||
assert.equal(plusLockedState.effectiveSignupMethod, 'email');
|
assert.equal(plusLockedState.effectiveSignupMethod, 'email');
|
||||||
|
assert.equal(plusLockedState.stepDefinitionOptions.phoneVerificationEnabled, true);
|
||||||
assert.equal(plusLockedState.shouldWarnCpaPhoneSignup, false);
|
assert.equal(plusLockedState.shouldWarnCpaPhoneSignup, false);
|
||||||
assert.equal(plusLockedState.targetCapabilities.usesOauthTimeoutBudget, false);
|
assert.equal(plusLockedState.targetCapabilities.usesOauthTimeoutBudget, false);
|
||||||
assert.deepEqual(plusLockedState.effectiveSignupMethods, ['email']);
|
assert.deepEqual(plusLockedState.effectiveSignupMethods, ['email']);
|
||||||
|
|||||||
@@ -263,6 +263,7 @@ const window = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
let latestState = { activeFlowId: 'openai' };
|
let latestState = { activeFlowId: 'openai' };
|
||||||
|
const inputPhoneVerificationEnabled = { checked: false };
|
||||||
let currentPlusModeEnabled = false;
|
let currentPlusModeEnabled = false;
|
||||||
let currentPlusPaymentMethod = 'paypal';
|
let currentPlusPaymentMethod = 'paypal';
|
||||||
const PLUS_ACCOUNT_ACCESS_STRATEGY_OAUTH = 'oauth';
|
const PLUS_ACCOUNT_ACCESS_STRATEGY_OAUTH = 'oauth';
|
||||||
@@ -270,6 +271,7 @@ const PLUS_ACCOUNT_ACCESS_STRATEGY_SUB2API_CODEX_SESSION = 'sub2api_codex_sessio
|
|||||||
const PLUS_ACCOUNT_ACCESS_STRATEGY_CPA_CODEX_SESSION = 'cpa_codex_session';
|
const PLUS_ACCOUNT_ACCESS_STRATEGY_CPA_CODEX_SESSION = 'cpa_codex_session';
|
||||||
let currentPlusAccountAccessStrategy = 'oauth';
|
let currentPlusAccountAccessStrategy = 'oauth';
|
||||||
let currentSignupMethod = 'email';
|
let currentSignupMethod = 'email';
|
||||||
|
let currentPhoneVerificationEnabled = false;
|
||||||
let currentPhoneSignupReloginAfterBindEmailEnabled = false;
|
let currentPhoneSignupReloginAfterBindEmailEnabled = false;
|
||||||
let currentStepDefinitionFlowId = 'openai';
|
let currentStepDefinitionFlowId = 'openai';
|
||||||
const DEFAULT_ACTIVE_FLOW_ID = 'openai';
|
const DEFAULT_ACTIVE_FLOW_ID = 'openai';
|
||||||
@@ -326,6 +328,7 @@ return {
|
|||||||
plusPaymentMethod: 'paypal',
|
plusPaymentMethod: 'paypal',
|
||||||
plusAccountAccessStrategy: 'sub2api_codex_session',
|
plusAccountAccessStrategy: 'sub2api_codex_session',
|
||||||
signupMethod: 'email',
|
signupMethod: 'email',
|
||||||
|
phoneVerificationEnabled: false,
|
||||||
phoneSignupReloginAfterBindEmailEnabled: false,
|
phoneSignupReloginAfterBindEmailEnabled: false,
|
||||||
accountContributionEnabled: false,
|
accountContributionEnabled: false,
|
||||||
},
|
},
|
||||||
@@ -338,6 +341,7 @@ return {
|
|||||||
plusPaymentMethod: 'paypal',
|
plusPaymentMethod: 'paypal',
|
||||||
plusAccountAccessStrategy: 'sub2api_codex_session',
|
plusAccountAccessStrategy: 'sub2api_codex_session',
|
||||||
signupMethod: 'email',
|
signupMethod: 'email',
|
||||||
|
phoneVerificationEnabled: false,
|
||||||
phoneSignupReloginAfterBindEmailEnabled: false,
|
phoneSignupReloginAfterBindEmailEnabled: false,
|
||||||
accountContributionEnabled: false,
|
accountContributionEnabled: false,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -181,6 +181,7 @@ let currentPlusModeEnabled = false;
|
|||||||
let currentPlusPaymentMethod = 'paypal';
|
let currentPlusPaymentMethod = 'paypal';
|
||||||
let currentPlusAccountAccessStrategy = 'oauth';
|
let currentPlusAccountAccessStrategy = 'oauth';
|
||||||
let currentSignupMethod = 'email';
|
let currentSignupMethod = 'email';
|
||||||
|
let currentPhoneVerificationEnabled = false;
|
||||||
let currentPhoneSignupReloginAfterBindEmailEnabled = false;
|
let currentPhoneSignupReloginAfterBindEmailEnabled = false;
|
||||||
let currentStepDefinitionFlowId = 'openai';
|
let currentStepDefinitionFlowId = 'openai';
|
||||||
const DEFAULT_ACTIVE_FLOW_ID = 'openai';
|
const DEFAULT_ACTIVE_FLOW_ID = 'openai';
|
||||||
@@ -223,6 +224,7 @@ return {
|
|||||||
plusPaymentMethod: 'paypal',
|
plusPaymentMethod: 'paypal',
|
||||||
plusAccountAccessStrategy: 'oauth',
|
plusAccountAccessStrategy: 'oauth',
|
||||||
signupMethod: 'email',
|
signupMethod: 'email',
|
||||||
|
phoneVerificationEnabled: false,
|
||||||
phoneSignupReloginAfterBindEmailEnabled: false,
|
phoneSignupReloginAfterBindEmailEnabled: false,
|
||||||
accountContributionEnabled: false,
|
accountContributionEnabled: false,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -89,6 +89,7 @@ const PLUS_ACCOUNT_ACCESS_STRATEGY_CPA_CODEX_SESSION = 'cpa_codex_session';
|
|||||||
const DEFAULT_PLUS_ACCOUNT_ACCESS_STRATEGY = PLUS_ACCOUNT_ACCESS_STRATEGY_OAUTH;
|
const DEFAULT_PLUS_ACCOUNT_ACCESS_STRATEGY = PLUS_ACCOUNT_ACCESS_STRATEGY_OAUTH;
|
||||||
let currentPlusAccountAccessStrategy = DEFAULT_PLUS_ACCOUNT_ACCESS_STRATEGY;
|
let currentPlusAccountAccessStrategy = DEFAULT_PLUS_ACCOUNT_ACCESS_STRATEGY;
|
||||||
let currentSignupMethod = 'email';
|
let currentSignupMethod = 'email';
|
||||||
|
let currentPhoneVerificationEnabled = false;
|
||||||
let currentPhoneSignupReloginAfterBindEmailEnabled = false;
|
let currentPhoneSignupReloginAfterBindEmailEnabled = false;
|
||||||
const DEFAULT_SIGNUP_METHOD = 'email';
|
const DEFAULT_SIGNUP_METHOD = 'email';
|
||||||
let stepDefinitions = [];
|
let stepDefinitions = [];
|
||||||
@@ -113,7 +114,7 @@ return {
|
|||||||
assert.deepEqual(api.getStepIds(), [7]);
|
assert.deepEqual(api.getStepIds(), [7]);
|
||||||
assert.deepEqual(api.calls[0], {
|
assert.deepEqual(api.calls[0], {
|
||||||
type: 'getSteps',
|
type: 'getSteps',
|
||||||
options: { activeFlowId: 'openai', plusModeEnabled: true, plusPaymentMethod: 'gopay', plusAccountAccessStrategy: 'oauth', signupMethod: 'email', phoneSignupReloginAfterBindEmailEnabled: false, accountContributionEnabled: false },
|
options: { activeFlowId: 'openai', plusModeEnabled: true, plusPaymentMethod: 'gopay', plusAccountAccessStrategy: 'oauth', signupMethod: 'email', phoneVerificationEnabled: false, phoneSignupReloginAfterBindEmailEnabled: false, accountContributionEnabled: false },
|
||||||
});
|
});
|
||||||
assert.deepEqual(api.calls[1], { type: 'render', stepIds: [7] });
|
assert.deepEqual(api.calls[1], { type: 'render', stepIds: [7] });
|
||||||
});
|
});
|
||||||
@@ -400,6 +401,7 @@ const PLUS_ACCOUNT_ACCESS_STRATEGY_CPA_CODEX_SESSION = 'cpa_codex_session';
|
|||||||
const DEFAULT_PLUS_ACCOUNT_ACCESS_STRATEGY = PLUS_ACCOUNT_ACCESS_STRATEGY_OAUTH;
|
const DEFAULT_PLUS_ACCOUNT_ACCESS_STRATEGY = PLUS_ACCOUNT_ACCESS_STRATEGY_OAUTH;
|
||||||
let currentPlusAccountAccessStrategy = DEFAULT_PLUS_ACCOUNT_ACCESS_STRATEGY;
|
let currentPlusAccountAccessStrategy = DEFAULT_PLUS_ACCOUNT_ACCESS_STRATEGY;
|
||||||
let currentSignupMethod = 'email';
|
let currentSignupMethod = 'email';
|
||||||
|
let currentPhoneVerificationEnabled = false;
|
||||||
let currentPhoneSignupReloginAfterBindEmailEnabled = false;
|
let currentPhoneSignupReloginAfterBindEmailEnabled = false;
|
||||||
const DEFAULT_SIGNUP_METHOD = 'email';
|
const DEFAULT_SIGNUP_METHOD = 'email';
|
||||||
let stepDefinitions = [];
|
let stepDefinitions = [];
|
||||||
@@ -424,7 +426,7 @@ return {
|
|||||||
assert.deepEqual(api.getStepIds(), [13]);
|
assert.deepEqual(api.getStepIds(), [13]);
|
||||||
assert.deepEqual(api.calls[0], {
|
assert.deepEqual(api.calls[0], {
|
||||||
type: 'getSteps',
|
type: 'getSteps',
|
||||||
options: { activeFlowId: 'openai', plusModeEnabled: true, plusPaymentMethod: 'gpc-helper', plusAccountAccessStrategy: 'oauth', signupMethod: 'email', phoneSignupReloginAfterBindEmailEnabled: false, accountContributionEnabled: false },
|
options: { activeFlowId: 'openai', plusModeEnabled: true, plusPaymentMethod: 'gpc-helper', plusAccountAccessStrategy: 'oauth', signupMethod: 'email', phoneVerificationEnabled: false, phoneSignupReloginAfterBindEmailEnabled: false, accountContributionEnabled: false },
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -433,6 +433,34 @@ test('Plus no-payment mode removes only payment chain nodes', () => {
|
|||||||
assert.deepStrictEqual(cpaNodes.find((node) => node.nodeId === 'wait-registration-success')?.next, ['cpa-session-import']);
|
assert.deepStrictEqual(cpaNodes.find((node) => node.nodeId === 'wait-registration-success')?.next, ['cpa-session-import']);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('OpenAI OAuth workflow removes post-login phone verification when phone verification is disabled', () => {
|
||||||
|
const globalScope = {};
|
||||||
|
const api = new Function('self', `${readStepDefinitionsBundle()}; return self.MultiPageStepDefinitions;`)(globalScope);
|
||||||
|
|
||||||
|
[
|
||||||
|
{ label: 'normal', options: { phoneVerificationEnabled: false } },
|
||||||
|
{ label: 'plus paypal', options: { plusModeEnabled: true, phoneVerificationEnabled: false } },
|
||||||
|
{ label: 'plus gopay', options: { plusModeEnabled: true, plusPaymentMethod: 'gopay', phoneVerificationEnabled: false } },
|
||||||
|
{ label: 'phone relogin', options: { signupMethod: 'phone', phoneSignupReloginAfterBindEmailEnabled: true, phoneVerificationEnabled: false } },
|
||||||
|
].forEach(({ label, options }) => {
|
||||||
|
const steps = api.getSteps(options);
|
||||||
|
const nodes = api.getNodes(options);
|
||||||
|
const keys = steps.map((step) => step.key);
|
||||||
|
const nodeIds = nodes.map((node) => node.nodeId);
|
||||||
|
const expectedNextAfterLoginCode = keys.includes('bind-email') ? 'bind-email' : 'confirm-oauth';
|
||||||
|
|
||||||
|
assert.equal(keys.includes('post-login-phone-verification'), false, `${label} should hide post-login phone step`);
|
||||||
|
assert.equal(keys.includes('post-bound-email-phone-verification'), false, `${label} should hide bound-email phone step`);
|
||||||
|
assert.equal(nodeIds.includes('post-login-phone-verification'), false, `${label} nodes should hide post-login phone step`);
|
||||||
|
assert.equal(nodeIds.includes('post-bound-email-phone-verification'), false, `${label} nodes should hide bound-email phone step`);
|
||||||
|
assert.deepStrictEqual(
|
||||||
|
nodes.find((node) => node.nodeId === 'fetch-login-code')?.next,
|
||||||
|
[expectedNextAfterLoginCode],
|
||||||
|
`${label} fetch-login-code should link to the next non-phone node`
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
test('Plus session strategy swaps the OAuth tail for a single SUB2API import node', () => {
|
test('Plus session strategy swaps the OAuth tail for a single SUB2API import node', () => {
|
||||||
const globalScope = {};
|
const globalScope = {};
|
||||||
const api = new Function('self', `${readStepDefinitionsBundle()}; return self.MultiPageStepDefinitions;`)(globalScope);
|
const api = new Function('self', `${readStepDefinitionsBundle()}; return self.MultiPageStepDefinitions;`)(globalScope);
|
||||||
|
|||||||
Reference in New Issue
Block a user