// background.js — Service worker (Manifest V3) // // Au clic sur l'icône : // 1. Vérifier qu'on est bien sur itsma.vd.ch (sinon message d'erreur) // 2. Injecter un script dans la page qui récupère le HTML complet // 3. Stocker dans chrome.storage.local (persistant, sert de "dernière capture") // 4. Ouvrir viewer.html chrome.action.onClicked.addListener(async (tab) => { try { if (!tab.url || !tab.url.startsWith("https://itsma.vd.ch/")) { await chrome.storage.local.set({ planningError: "Cette extension ne fonctionne que sur https://itsma.vd.ch/. " + "Va d'abord sur la page du planning, puis reclique sur l'icône." }); await openViewer(); return; } const results = await chrome.scripting.executeScript({ target: { tabId: tab.id }, func: extractPlanningFromPage }); const data = results[0]?.result; if (!data || !data.html) { await chrome.storage.local.set({ planningError: "Impossible de lire le contenu de la page. " + "Assure-toi d'être sur la page du planning des techniciens." }); await openViewer(); return; } await chrome.storage.local.set({ planningHtml: data.html, planningUrl: tab.url, planningCapturedAt: Date.now(), planningError: null }); await openViewer(); } catch (err) { console.error("Erreur extension:", err); await chrome.storage.local.set({ planningError: "Erreur inattendue : " + (err?.message || String(err)) }); await openViewer(); } }); function extractPlanningFromPage() { return { html: document.documentElement.outerHTML }; } async function openViewer() { const viewerUrl = chrome.runtime.getURL("viewer.html"); await chrome.tabs.create({ url: viewerUrl }); }