From b4edb8db4e50b05fd7fb1edada8ee84be5da604a Mon Sep 17 00:00:00 2001 From: johnysigma Date: Tue, 27 Jan 2026 08:11:46 +0200 Subject: [PATCH] Improve default settings initialization --- js/background.js | 57 +++++++++++++++++++++++++++++++++++++++++++++++- js/config.js | 4 +++- manifest.json | 3 ++- 3 files changed, 61 insertions(+), 3 deletions(-) diff --git a/js/background.js b/js/background.js index 6d5b112..2e27442 100644 --- a/js/background.js +++ b/js/background.js @@ -26,7 +26,10 @@ chrome.runtime.onInstalled.addListener(async (details) => { [CONFIG.STORAGE_KEYS.PROXY_ENABLED]: false, [CONFIG.STORAGE_KEYS.AUTO_CONNECT]: CONFIG.DEFAULTS.AUTO_CONNECT, [CONFIG.STORAGE_KEYS.WEBRTC_PROTECTION]: CONFIG.DEFAULTS.WEBRTC_PROTECTION, - [CONFIG.STORAGE_KEYS.BYPASS_LOCAL]: CONFIG.DEFAULTS.BYPASS_LOCAL + [CONFIG.STORAGE_KEYS.KILL_SWITCH]: CONFIG.DEFAULTS.KILL_SWITCH, + [CONFIG.STORAGE_KEYS.BYPASS_LOCAL]: CONFIG.DEFAULTS.BYPASS_LOCAL, + [CONFIG.STORAGE_KEYS.PROXY_SOURCE]: CONFIG.DEFAULTS.PROXY_SOURCE, + [CONFIG.STORAGE_KEYS.UPDATE_INTERVAL]: CONFIG.DEFAULTS.UPDATE_INTERVAL }); // Auto-fetch proxies on first install @@ -402,6 +405,11 @@ async function handleSaveSettings(settings) { } } + // Update proxy list auto-update alarm if changed + if (settings.updateInterval !== undefined) { + await setupProxyUpdateAlarm(settings.updateInterval); + } + // Check if custom proxy connection settings changed (IP, port, credentials) const customProxyConnectionChanged = settings.proxyIP !== undefined || @@ -682,6 +690,53 @@ async function initializePrivacySettings() { // Initialize privacy settings initializePrivacySettings(); +// ============================================ +// Proxy List Auto-Update +// ============================================ + +const PROXY_UPDATE_ALARM = 'proxyListUpdate'; + +/** + * Setup or clear the proxy list auto-update alarm + * @param {number} intervalHours - Update interval in hours (0 = manual/disabled) + */ +async function setupProxyUpdateAlarm(intervalHours) { + // Clear existing alarm + await chrome.alarms.clear(PROXY_UPDATE_ALARM); + + if (intervalHours > 0) { + // Create periodic alarm + chrome.alarms.create(PROXY_UPDATE_ALARM, { + periodInMinutes: intervalHours * 60 + }); + Utils.log('info', `Proxy auto-update alarm set for every ${intervalHours} hour(s)`); + } else { + Utils.log('info', 'Proxy auto-update disabled (manual only)'); + } +} + +// Handle alarm events +chrome.alarms.onAlarm.addListener(async (alarm) => { + if (alarm.name === PROXY_UPDATE_ALARM) { + Utils.log('info', 'Auto-update alarm triggered, fetching proxy list...'); + try { + const source = await Storage.getValue(CONFIG.STORAGE_KEYS.PROXY_SOURCE, CONFIG.DEFAULTS.PROXY_SOURCE); + await handleFetchProxies(source); + Utils.log('info', 'Proxy list auto-updated successfully'); + } catch (error) { + Utils.log('error', 'Failed to auto-update proxy list', error); + } + } +}); + +// Restore alarm on startup +async function initializeProxyUpdateAlarm() { + const interval = await Storage.getValue(CONFIG.STORAGE_KEYS.UPDATE_INTERVAL, CONFIG.DEFAULTS.UPDATE_INTERVAL); + await setupProxyUpdateAlarm(interval); +} + +initializeProxyUpdateAlarm(); + // ============================================ // Proxy Authentication Handler // ============================================ diff --git a/js/config.js b/js/config.js index 7ac9337..18a3ec2 100644 --- a/js/config.js +++ b/js/config.js @@ -16,6 +16,7 @@ const CONFIG = { PROXY_TIMEOUT: 5000, AUTO_CONNECT: false, WEBRTC_PROTECTION: false, + KILL_SWITCH: false, BYPASS_LOCAL: true, PROXY_SOURCE: 'arweave', UPDATE_INTERVAL: 0 // manual only @@ -70,7 +71,8 @@ const CONFIG = { WEBRTC_PROTECTION: 'webrtcProtection', KILL_SWITCH: 'killSwitch', BYPASS_LOCAL: 'bypassLocal', - LAST_UPDATE: 'lastProxyUpdate' + LAST_UPDATE: 'lastProxyUpdate', + UPDATE_INTERVAL: 'updateInterval' } }; diff --git a/manifest.json b/manifest.json index cd29fb5..38eb232 100644 --- a/manifest.json +++ b/manifest.json @@ -10,7 +10,8 @@ "scripting", "privacy", "webRequest", - "webRequestAuthProvider" + "webRequestAuthProvider", + "alarms" ], "host_permissions": [""], "background": {