caps_enhancer/js/background.js
2026-03-23 15:36:40 +03:00

47 lines
1.7 KiB
JavaScript

// Фоновый service worker — проверка обновлений расширения
// Работает только в режиме "Load unpacked" (Developer Mode)
const VERSION_URL = 'https://git.ihateamerica.ru/caps_enhancer/version.json';
const CHECK_INTERVAL_MINUTES = 60;
chrome.runtime.onInstalled.addListener(() => {
chrome.alarms.create('updateCheck', {
delayInMinutes: 1,
periodInMinutes: CHECK_INTERVAL_MINUTES
});
});
chrome.alarms.onAlarm.addListener((alarm) => {
if (alarm.name === 'updateCheck') {
checkForUpdates();
}
});
async function checkForUpdates() {
try {
const res = await fetch(VERSION_URL + '?t=' + Date.now());
if (!res.ok) return;
const { version: remote } = await res.json();
const local = chrome.runtime.getManifest().version;
if (isNewer(remote, local)) {
console.log(`[CAPS Enhancer] Обновление: ${local}${remote}. Перезагружаю...`);
// Небольшая задержка — дать scheduled task время распаковать файлы
await new Promise(r => setTimeout(r, 3000));
chrome.runtime.reload();
}
} catch {
// Нет соединения или сервер недоступен — молча игнорируем
}
}
function isNewer(remote, local) {
const r = remote.split('.').map(Number);
const l = local.split('.').map(Number);
for (let i = 0; i < Math.max(r.length, l.length); i++) {
if ((r[i] || 0) > (l[i] || 0)) return true;
if ((r[i] || 0) < (l[i] || 0)) return false;
}
return false;
}