feat: prefill the mairie form from the picked event

Wire the seam end to end: the background mirrors config.local.json into
storage (a content script would need web_accessible_resources, which would
expose the email to the mairie page), and the content script lays the computed
values into the form.

The layer is deliberately thin and untested: all the logic lives in
formulaire-valeurs.js. It never writes an empty value, never touches the image,
the honeypots or the CSRF tokens, and never submits: a human reads and sends.
A banner states what is left to do, and warns when a field could not be filled,
so that a silent failure stays diagnosable.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Pierre Martin
2026-07-17 14:30:47 +02:00
co-authored by Claude Opus 4.8
parent 78153557dd
commit 2e60bd08d8
5 changed files with 363 additions and 1 deletions
+24
View File
@@ -3,3 +3,27 @@
browser.action.onClicked.addListener(() => {
browser.tabs.create({ url: browser.runtime.getURL("liste.html") });
});
// C'est le background qui lit config.local.json, pas le content script : ce
// dernier ne pourrait le faire que via web_accessible_resources, ce qui
// exposerait l'email à la page de la mairie. Il la reçoit par le storage.
//
// Le fichier est OPTIONNEL (absent d'un clone frais), donc impossible à
// déclarer dans un tableau `js` du manifest — Firefox refuserait d'installer
// l'extension. D'où fetch + repli : absent ou JSON invalide → {} → défauts nus,
// jamais d'exception.
async function chargerConfigLocale() {
let locale = {};
try {
const reponse = await fetch(browser.runtime.getURL("config.local.json"));
if (reponse.ok) locale = await reponse.json();
} catch {
console.warn("Écho du Huit : config.local.json illisible, défauts utilisés.");
}
await browser.storage.local.set({ [globalThis.EchoConfig.CLE_CONFIG_LOCALE]: locale });
}
// À chaque réveil de l'event page, et pas seulement à l'installation : le
// fichier peut avoir changé depuis, le storage doit refléter le disque.
chargerConfigLocale();
browser.runtime.onInstalled.addListener(chargerConfigLocale);