| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- (function attachBackgroundStep3(root, factory) {
- root.MultiPageBackgroundStep3 = factory();
- })(typeof self !== 'undefined' ? self : globalThis, function createBackgroundStep3Module() {
- function createStep3Executor(deps = {}) {
- const {
- addLog,
- chrome,
- ensureContentScriptReadyOnTab,
- generatePassword,
- getTabId,
- isTabAlive,
- sendToContentScript,
- setPasswordState,
- setState,
- SIGNUP_PAGE_INJECT_FILES,
- } = deps;
- async function executeStep3(state) {
- const resolvedEmail = state.email;
- if (!resolvedEmail) {
- throw new Error('缺少邮箱地址,请先完成步骤 2。');
- }
- const signupTabId = await getTabId('signup-page');
- if (!signupTabId || !(await isTabAlive('signup-page'))) {
- throw new Error('认证页面标签页已关闭,请先重新完成步骤 2。');
- }
- const password = state.customPassword || state.password || generatePassword();
- await setPasswordState(password);
- const accounts = state.accounts || [];
- accounts.push({ email: resolvedEmail, createdAt: new Date().toISOString() });
- await setState({ accounts });
- await chrome.tabs.update(signupTabId, { active: true });
- await ensureContentScriptReadyOnTab('signup-page', signupTabId, {
- inject: SIGNUP_PAGE_INJECT_FILES,
- injectSource: 'signup-page',
- timeoutMs: 45000,
- retryDelayMs: 900,
- logMessage: '步骤 3:密码页内容脚本未就绪,正在等待页面恢复...',
- });
- await addLog(
- `步骤 3:正在填写密码,邮箱为 ${resolvedEmail},密码为${state.customPassword ? '自定义' : '自动生成'}(${password.length} 位)`
- );
- await sendToContentScript('signup-page', {
- type: 'EXECUTE_STEP',
- step: 3,
- source: 'background',
- payload: { email: resolvedEmail, password },
- });
- }
- return { executeStep3 };
- }
- return { createStep3Executor };
- });
|