"use strict"; /** * Dragon Wind — Background Service Worker * Handles badge updates and keeps auth token alive. */ chrome.runtime.onInstalled.addListener(() => { chrome.action.setBadgeBackgroundColor({ color: '#e05c1a' }); console.log('[Dragon Wind] Extension installed'); }); // Listen for messages from popup/content scripts chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => { if (msg.type === 'SET_BADGE') { chrome.action.setBadgeText({ text: msg.text || '' }); sendResponse({ ok: true }); } if (msg.type === 'UPLOAD_COMPLETE') { chrome.action.setBadgeText({ text: '✓' }); setTimeout(() => chrome.action.setBadgeText({ text: '' }), 3000); sendResponse({ ok: true }); } return true; }); // Periodic health check (every 5 min) chrome.alarms.create('health-check', { periodInMinutes: 5 }); chrome.alarms.onAlarm.addListener(async (alarm) => { if (alarm.name !== 'health-check') return; const stored = await chrome.storage.local.get(['config', 'token']); if (!stored.config?.serverUrl || !stored.token) return; try { const r = await fetch(`${stored.config.serverUrl}/api/health`, { headers: { 'x-auth-token': stored.token } }); if (r.status === 401) { await chrome.storage.local.remove('token'); console.log('[Dragon Wind] Token expired — cleared'); } } catch (_) {} });