feat: 添加 Plus 模式和贡献模式支持,增强步骤执行延迟和提示逻辑

This commit is contained in:
QLHazyCoder
2026-04-26 08:51:20 +08:00
parent f558194185
commit 227ebedda4
10 changed files with 577 additions and 14 deletions
@@ -57,6 +57,7 @@ function createApi({
plusRiskEnabled = false,
plusRiskConfirmed = true,
plusRiskDismissPrompt = false,
plusContributionImpl,
} = {}) {
const bundle = extractFunction('startAutoRunFromCurrentSettings');
@@ -110,6 +111,9 @@ async function openPlusAutoRunRiskConfirmModal(totalRuns) {
function setAutoRunPlusRiskPromptDismissed(dismissed) {
events.push({ type: 'plus-risk-dismiss', dismissed });
}
async function maybeShowPlusContributionPromptBeforeAutoRun(plusModeEnabled) {
${plusContributionImpl ? 'return (' + plusContributionImpl + ')(plusModeEnabled, events);' : 'return true;'}
}
function normalizeAutoDelayMinutes(value) { return Number(value) || 30; }
async function refreshContributionContentHint() {
events.push({ type: 'refresh' });
@@ -216,3 +220,22 @@ test('startAutoRunFromCurrentSettings aborts when Plus risk warning is declined'
['refresh', 'confirm-check', 'plus-risk-modal']
);
});
test('startAutoRunFromCurrentSettings aborts when Plus contribution prompt opens contribution page', async () => {
const api = createApi({
plusModeEnabled: true,
plusContributionImpl: `async (plusModeEnabled, events) => {
events.push({ type: 'plus-contribution-modal', plusModeEnabled });
return false;
}`,
});
const result = await api.startAutoRunFromCurrentSettings();
assert.equal(result, false);
assert.deepEqual(
api.getEvents().map((entry) => entry.type),
['refresh', 'confirm-check', 'plus-contribution-modal']
);
assert.equal(api.getEvents()[2].plusModeEnabled, true);
});