step5.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. (function attachBackgroundStep5(root, factory) {
  2. root.MultiPageBackgroundStep5 = factory();
  3. })(typeof self !== 'undefined' ? self : globalThis, function createBackgroundStep5Module() {
  4. function createStep5Executor(deps = {}) {
  5. const {
  6. addLog,
  7. generateRandomBirthday,
  8. generateRandomName,
  9. getTabId,
  10. handleChatgptOnboardingSkip,
  11. isRetryableContentScriptTransportError,
  12. LOG_PREFIX,
  13. sendToContentScript,
  14. waitForStep5ChatgptRedirect,
  15. } = deps;
  16. async function executeStep5() {
  17. const { firstName, lastName } = generateRandomName();
  18. const { year, month, day } = generateRandomBirthday();
  19. await addLog(`步骤 5:已生成姓名 ${firstName} ${lastName},生日 ${year}-${month}-${day}`);
  20. let step5Result = null;
  21. let step5TransportError = null;
  22. try {
  23. step5Result = await sendToContentScript('signup-page', {
  24. type: 'EXECUTE_STEP',
  25. step: 5,
  26. source: 'background',
  27. payload: { firstName, lastName, year, month, day },
  28. });
  29. } catch (err) {
  30. if (isRetryableContentScriptTransportError(err)) {
  31. step5TransportError = err;
  32. console.log(LOG_PREFIX, '步骤 5:内容脚本通信中断,正在检查是否跳转到 ChatGPT 引导页...', err?.message);
  33. } else {
  34. throw err;
  35. }
  36. }
  37. if (step5Result?.chatgptOnboarding) {
  38. await addLog('步骤 5:检测到 ChatGPT 引导页跳转,正在处理引导页跳过...');
  39. await handleChatgptOnboardingSkip();
  40. return;
  41. }
  42. if (step5Result?.chatgptHome) {
  43. await addLog('步骤 5:检测到已进入 ChatGPT 页面,注册成功。', 'ok');
  44. return;
  45. }
  46. if (step5TransportError) {
  47. const signupTabId = await getTabId('signup-page');
  48. const redirectedTab = await waitForStep5ChatgptRedirect(signupTabId);
  49. if (redirectedTab) {
  50. await addLog('步骤 5:内容脚本因页面跳转到 ChatGPT 而断开,正在处理引导页跳过...');
  51. await handleChatgptOnboardingSkip(redirectedTab.id);
  52. return;
  53. }
  54. throw step5TransportError;
  55. }
  56. }
  57. return { executeStep5 };
  58. }
  59. return { createStep5Executor };
  60. });