|
|
@@ -167,6 +167,7 @@ const btnCfDomainMode = document.getElementById('btn-cf-domain-mode');
|
|
|
const inputRunCount = document.getElementById('input-run-count');
|
|
|
const inputAutoSkipFailures = document.getElementById('input-auto-skip-failures');
|
|
|
const inputAutoSkipFailuresThreadIntervalMinutes = document.getElementById('input-auto-skip-failures-thread-interval-minutes');
|
|
|
+const inputAutoAddPhonePauseMinutes = document.getElementById('input-auto-add-phone-pause-minutes');
|
|
|
const inputAutoDelayEnabled = document.getElementById('input-auto-delay-enabled');
|
|
|
const inputAutoDelayMinutes = document.getElementById('input-auto-delay-minutes');
|
|
|
const inputAutoStepDelaySeconds = document.getElementById('input-auto-step-delay-seconds');
|
|
|
@@ -197,6 +198,9 @@ const AUTO_DELAY_DEFAULT_MINUTES = 30;
|
|
|
const AUTO_FALLBACK_THREAD_INTERVAL_MIN_MINUTES = 0;
|
|
|
const AUTO_FALLBACK_THREAD_INTERVAL_MAX_MINUTES = 1440;
|
|
|
const AUTO_FALLBACK_THREAD_INTERVAL_DEFAULT_MINUTES = 0;
|
|
|
+const AUTO_ADD_PHONE_PAUSE_MIN_MINUTES = 1;
|
|
|
+const AUTO_ADD_PHONE_PAUSE_MAX_MINUTES = 1440;
|
|
|
+const AUTO_ADD_PHONE_PAUSE_DEFAULT_MINUTES = 10;
|
|
|
const AUTO_RUN_MAX_RETRIES_PER_ROUND = 3;
|
|
|
const AUTO_STEP_DELAY_MIN_SECONDS = 0;
|
|
|
const AUTO_STEP_DELAY_MAX_SECONDS = 600;
|
|
|
@@ -987,6 +991,23 @@ function normalizeAutoRunThreadIntervalMinutes(value) {
|
|
|
);
|
|
|
}
|
|
|
|
|
|
+function normalizeAddPhonePauseMinutes(value) {
|
|
|
+ const rawValue = String(value ?? '').trim();
|
|
|
+ if (!rawValue) {
|
|
|
+ return AUTO_ADD_PHONE_PAUSE_DEFAULT_MINUTES;
|
|
|
+ }
|
|
|
+
|
|
|
+ const numeric = Number(rawValue);
|
|
|
+ if (!Number.isFinite(numeric)) {
|
|
|
+ return AUTO_ADD_PHONE_PAUSE_DEFAULT_MINUTES;
|
|
|
+ }
|
|
|
+
|
|
|
+ return Math.min(
|
|
|
+ AUTO_ADD_PHONE_PAUSE_MAX_MINUTES,
|
|
|
+ Math.max(AUTO_ADD_PHONE_PAUSE_MIN_MINUTES, Math.floor(numeric))
|
|
|
+ );
|
|
|
+}
|
|
|
+
|
|
|
function normalizeAutoStepDelaySeconds(value) {
|
|
|
const rawValue = String(value ?? '').trim();
|
|
|
if (!rawValue) {
|
|
|
@@ -1353,6 +1374,7 @@ function collectSettingsPayload() {
|
|
|
cloudflareTempEmailDomains: tempEmailDomains,
|
|
|
autoRunSkipFailures: inputAutoSkipFailures.checked,
|
|
|
autoRunFallbackThreadIntervalMinutes: normalizeAutoRunThreadIntervalMinutes(inputAutoSkipFailuresThreadIntervalMinutes.value),
|
|
|
+ autoRunAddPhonePauseMinutes: normalizeAddPhonePauseMinutes(inputAutoAddPhonePauseMinutes?.value),
|
|
|
autoRunDelayEnabled: inputAutoDelayEnabled.checked,
|
|
|
autoRunDelayMinutes: normalizeAutoDelayMinutes(inputAutoDelayMinutes.value),
|
|
|
autoStepDelaySeconds: normalizeAutoStepDelaySeconds(inputAutoStepDelaySeconds.value),
|
|
|
@@ -1751,6 +1773,9 @@ function applySettingsState(state) {
|
|
|
setCloudflareTempEmailDomainEditMode(false, { clearInput: true });
|
|
|
inputAutoSkipFailures.checked = Boolean(state?.autoRunSkipFailures);
|
|
|
inputAutoSkipFailuresThreadIntervalMinutes.value = String(normalizeAutoRunThreadIntervalMinutes(state?.autoRunFallbackThreadIntervalMinutes));
|
|
|
+ if (inputAutoAddPhonePauseMinutes) {
|
|
|
+ inputAutoAddPhonePauseMinutes.value = String(normalizeAddPhonePauseMinutes(state?.autoRunAddPhonePauseMinutes));
|
|
|
+ }
|
|
|
inputAutoDelayEnabled.checked = Boolean(state?.autoRunDelayEnabled);
|
|
|
inputAutoDelayMinutes.value = String(normalizeAutoDelayMinutes(state?.autoRunDelayMinutes));
|
|
|
inputAutoStepDelaySeconds.value = formatAutoStepDelayInputValue(state?.autoStepDelaySeconds);
|
|
|
@@ -3826,6 +3851,17 @@ inputAutoSkipFailuresThreadIntervalMinutes.addEventListener('blur', () => {
|
|
|
saveSettings({ silent: true }).catch(() => { });
|
|
|
});
|
|
|
|
|
|
+inputAutoAddPhonePauseMinutes?.addEventListener('input', () => {
|
|
|
+ markSettingsDirty(true);
|
|
|
+ scheduleSettingsAutoSave();
|
|
|
+});
|
|
|
+inputAutoAddPhonePauseMinutes?.addEventListener('blur', () => {
|
|
|
+ inputAutoAddPhonePauseMinutes.value = String(
|
|
|
+ normalizeAddPhonePauseMinutes(inputAutoAddPhonePauseMinutes.value)
|
|
|
+ );
|
|
|
+ saveSettings({ silent: true }).catch(() => { });
|
|
|
+});
|
|
|
+
|
|
|
inputAutoDelayEnabled.addEventListener('change', () => {
|
|
|
updateAutoDelayInputState();
|
|
|
markSettingsDirty(true);
|
|
|
@@ -4078,6 +4114,11 @@ chrome.runtime.onMessage.addListener((message, _sender, sendResponse) => {
|
|
|
);
|
|
|
updateFallbackThreadIntervalInputState();
|
|
|
}
|
|
|
+ if (message.payload.autoRunAddPhonePauseMinutes !== undefined && inputAutoAddPhonePauseMinutes) {
|
|
|
+ inputAutoAddPhonePauseMinutes.value = String(
|
|
|
+ normalizeAddPhonePauseMinutes(message.payload.autoRunAddPhonePauseMinutes)
|
|
|
+ );
|
|
|
+ }
|
|
|
if (message.payload.autoStepDelaySeconds !== undefined) {
|
|
|
inputAutoStepDelaySeconds.value = formatAutoStepDelayInputValue(message.payload.autoStepDelaySeconds);
|
|
|
}
|