diff --git a/background.js b/background.js index cea29c8..03045ad 100644 --- a/background.js +++ b/background.js @@ -104,6 +104,9 @@ const AUTO_STEP_DELAY_MIN_ALLOWED_SECONDS = 0; const AUTO_STEP_DELAY_MAX_ALLOWED_SECONDS = 600; const LEGACY_AUTO_STEP_DELAY_KEYS = ['autoStepRandomDelayMinSeconds', 'autoStepRandomDelayMaxSeconds']; const DEFAULT_LOCAL_CPA_STEP9_MODE = 'submit'; +const MAIL_2925_MODE_PROVIDE = 'provide'; +const MAIL_2925_MODE_RECEIVE = 'receive'; +const DEFAULT_MAIL_2925_MODE = MAIL_2925_MODE_PROVIDE; const HOTMAIL_SERVICE_MODE_REMOTE = 'remote'; const HOTMAIL_SERVICE_MODE_LOCAL = 'local'; const DEFAULT_HOTMAIL_REMOTE_BASE_URL = ''; @@ -135,6 +138,7 @@ const PERSISTED_SETTING_DEFAULTS = { autoRunDelayMinutes: 30, autoStepDelaySeconds: null, mailProvider: '163', + mail2925Mode: DEFAULT_MAIL_2925_MODE, emailGenerator: 'duck', autoDeleteUsedIcloudAlias: false, icloudHostPreference: 'auto', @@ -372,6 +376,12 @@ function buildLuckmailSessionSettingsPayload(input = {}) { return payload; } +function normalizeMail2925Mode(value = '') { + return String(value || '').trim().toLowerCase() === MAIL_2925_MODE_RECEIVE + ? MAIL_2925_MODE_RECEIVE + : DEFAULT_MAIL_2925_MODE; +} + function normalizeLocalCpaStep9Mode(value = '') { return String(value || '').trim().toLowerCase() === 'bypass' ? 'bypass' @@ -499,6 +509,8 @@ function normalizePersistentSettingValue(key, value) { return normalizeAutoStepDelaySeconds(value, PERSISTED_SETTING_DEFAULTS.autoStepDelaySeconds); case 'mailProvider': return normalizeMailProvider(value); + case 'mail2925Mode': + return normalizeMail2925Mode(value); case 'emailGenerator': return normalizeEmailGenerator(value); case 'autoDeleteUsedIcloudAlias': @@ -1004,6 +1016,13 @@ function isCustomMailProvider(stateOrProvider) { return provider === 'custom'; } +function getMail2925Mode(stateOrMode) { + if (typeof stateOrMode === 'string') { + return normalizeMail2925Mode(stateOrMode); + } + return normalizeMail2925Mode(stateOrMode?.mail2925Mode); +} + async function syncHotmailAccounts(accounts) { const normalized = normalizeHotmailAccounts(accounts); await setPersistentSettings({ hotmailAccounts: normalized }); @@ -1627,14 +1646,20 @@ function generateRandomSuffix(length = 6) { return suffix; } -function isGeneratedAliasProvider(provider) { - return provider === '2925'; +function isGeneratedAliasProvider(stateOrProvider, mail2925Mode = undefined) { + const provider = typeof stateOrProvider === 'string' + ? stateOrProvider + : stateOrProvider?.mailProvider; + const resolvedMail2925Mode = mail2925Mode !== undefined + ? normalizeMail2925Mode(mail2925Mode) + : getMail2925Mode(stateOrProvider); + return provider === '2925' && resolvedMail2925Mode === MAIL_2925_MODE_PROVIDE; } function shouldUseCustomRegistrationEmail(state = {}) { return isCustomMailProvider(state) || (!isHotmailProvider(state) - && !isGeneratedAliasProvider(state.mailProvider) + && !isGeneratedAliasProvider(state) && normalizeEmailGenerator(state.emailGenerator) === 'custom'); } @@ -1646,7 +1671,7 @@ function buildGeneratedAliasEmail(state) { throw new Error('2925 邮箱前缀未设置,请先在侧边栏填写。'); } - if (provider === '2925') { + if (provider === '2925' && isGeneratedAliasProvider(state)) { return `${emailPrefix}${generateRandomSuffix(6)}@2925.com`; } @@ -5317,7 +5342,7 @@ async function ensureAutoEmailReady(targetRun, totalRuns, attemptRuns) { return purchase.email_address; } - if (isGeneratedAliasProvider(currentState.mailProvider)) { + if (isGeneratedAliasProvider(currentState)) { if (!currentState.emailPrefix) { throw new Error('2925 邮箱前缀未设置,请先在侧边栏填写。'); } @@ -6449,7 +6474,7 @@ async function executeStep3(state) { } else if (isLuckmailProvider(state)) { const purchase = await ensureLuckmailPurchaseForFlow({ allowReuse: true }); resolvedEmail = purchase.email_address; - } else if (isGeneratedAliasProvider(state.mailProvider)) { + } else if (isGeneratedAliasProvider(state)) { resolvedEmail = buildGeneratedAliasEmail(state); } diff --git a/sidepanel/sidepanel.html b/sidepanel/sidepanel.html index 202a96c..840b368 100644 --- a/sidepanel/sidepanel.html +++ b/sidepanel/sidepanel.html @@ -165,6 +165,13 @@ +
邮箱生成