47 lines
1.7 KiB
JavaScript
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;
|
|
}
|