Skip to content

Commit

Permalink
Merge pull request #136 from modos189/fix/firefox-alerts
Browse files Browse the repository at this point in the history
Activation of Alarm API for all browsers in MV3
  • Loading branch information
modos189 authored Jun 1, 2024
2 parents fba735a + 8f4a213 commit 689392b
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 17 deletions.
40 changes: 24 additions & 16 deletions src/background/background.js
Original file line number Diff line number Diff line change
Expand Up @@ -77,14 +77,12 @@ browser.runtime.onMessage.addListener(async (request) => {
break;
case "toggleIITC":
await onToggleIITC(request.value);
if (IS_USERSCRIPTS_API && request.value === true) {
if (request.value === true) {
await initUserscriptsApi();
}
break;
case "popupWasOpened":
if (IS_USERSCRIPTS_API) {
await initUserscriptsApi();
}
await initUserscriptsApi();
break;
case "xmlHttpRequestHandler":
await xmlHttpRequestHandler(request.value);
Expand Down Expand Up @@ -156,8 +154,8 @@ browser.runtime.onMessage.addListener(async (request) => {
break;
case "setUpdateCheckInterval":
await manager.setUpdateCheckInterval(request.interval, request.channel);
if (IS_USERSCRIPTS_API) {
await createCheckUpdateAlarm();
if (!IS_LEGACY_API) {
await createCheckUpdateAlarm(true);
}
break;
}
Expand Down Expand Up @@ -218,11 +216,11 @@ async function xmlHttpRequestHandler(data) {
}

async function initUserscriptsApi() {
if (IS_SCRIPTING_API) return;
if (!IS_USERSCRIPTS_API) return;

let scripts = [];
try {
scripts = await chrome.userScripts.getScripts();
scripts = await browser.userScripts.getScripts();
// eslint-disable-next-line no-empty
} catch {}

Expand All @@ -239,8 +237,16 @@ async function initUserscriptsApi() {
await manage_userscripts_api(plugins_event);
}

async function createCheckUpdateAlarm() {
if (IS_SCRIPTING_API) return;
async function createCheckUpdateAlarm(need_to_update = false) {
if (IS_LEGACY_API) return;

const alarm_name = "check-update-alarm";
if (!need_to_update) {
const alarm = await browser.alarms.get(alarm_name);
if (alarm) {
return;
}
}

const storage_intervals = await browser.storage.local.get([
"channel",
Expand All @@ -249,26 +255,28 @@ async function createCheckUpdateAlarm() {
"custom_update_check_interval",
"external_update_check_interval",
]);
const channel_interval =
storage_intervals[storage_intervals["channel"]] | 604800;
const external_interval = storage_intervals["external"] | 604800;
const channel_interval_key = `${storage_intervals["channel"]}_update_check_interval`;
const channel_interval = storage_intervals[channel_interval_key] || 604800;
const external_interval =
storage_intervals["external_update_check_interval"] || 604800;

let interval_seconds = Math.min(channel_interval, external_interval);
if (interval_seconds < 30) {
interval_seconds = 30;
}
await chrome.alarms.create("check-update-alarm", {
await browser.alarms.create(alarm_name, {
periodInMinutes: interval_seconds / 60,
});
}

if (IS_USERSCRIPTS_API) {
if (!IS_LEGACY_API) {
browser.alarms.onAlarm.addListener(async () => {
await manager.checkUpdates(false);
});
}

self.addEventListener("activate", () => {
initUserscriptsApi().then();
createCheckUpdateAlarm().then();
});

createCheckUpdateAlarm().then();
2 changes: 1 addition & 1 deletion vue.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ const manifest_v3_transformer = (manifest, browser) => {
},
];
manifest.permissions.push("webRequest");
manifest.permissions.push("alarms");

manifest.action = manifest.browser_action;
delete manifest.browser_action;
Expand All @@ -70,7 +71,6 @@ const manifest_v3_transformer = (manifest, browser) => {
delete manifest.browser_specific_settings;
manifest.minimum_chrome_version = "120";
manifest.permissions.push("userScripts");
manifest.permissions.push("alarms");
manifest.permissions.push("declarativeNetRequest");
manifest.background.service_worker = "js/background.js";

Expand Down

0 comments on commit 689392b

Please sign in to comment.