refactor(background): simplify RELOAD_TAB with setTimeout
Replace the 30-line chrome.alarms API implementation with a simple setTimeout for delayed tab reloads. Rationale: The only usage is a 1-second delay after storage cleaning. Service workers don't go idle within 1 second, so alarms' persistence benefit is unnecessary here. - Removed: alarm naming, create/clear, listener register/unregister - Added: 4-line setTimeout conditional Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -93,31 +93,12 @@ export default defineBackground(() => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
if (delay <= 0) {
|
if (delay > 0) {
|
||||||
|
setTimeout(executeReload, delay);
|
||||||
|
} else {
|
||||||
executeReload();
|
executeReload();
|
||||||
return { success: true };
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const alarmName = `reload-tab-${tabId}-${Date.now()}`;
|
|
||||||
|
|
||||||
await browser.alarms.create(alarmName, { when: Date.now() + delay });
|
|
||||||
|
|
||||||
const cleanupTimeout = setTimeout(() => {
|
|
||||||
browser.alarms.onAlarm.removeListener(alarmListener);
|
|
||||||
browser.alarms.clear(alarmName).catch(() => {});
|
|
||||||
}, delay + 5000);
|
|
||||||
|
|
||||||
const alarmListener = (alarm: { name: string }) => {
|
|
||||||
if (alarm.name !== alarmName) return;
|
|
||||||
|
|
||||||
clearTimeout(cleanupTimeout);
|
|
||||||
executeReload();
|
|
||||||
browser.alarms.onAlarm.removeListener(alarmListener);
|
|
||||||
browser.alarms.clear(alarmName).catch(() => {});
|
|
||||||
};
|
|
||||||
|
|
||||||
browser.alarms.onAlarm.addListener(alarmListener);
|
|
||||||
|
|
||||||
return { success: true };
|
return { success: true };
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user