diff --git a/extension/liste.js b/extension/liste.js index 6f11099..cc01247 100644 --- a/extension/liste.js +++ b/extension/liste.js @@ -71,7 +71,13 @@ function rendreEvenement(evenement) { creer.type = "button"; creer.className = "evenement-creer"; creer.textContent = "Créer sur le site mairie"; - creer.addEventListener("click", () => creerSurSiteMairie(evenement)); + creer.addEventListener("click", async () => { + try { + await creerSurSiteMairie(evenement); + } catch (erreur) { + rendreEchecCreation(erreur); + } + }); item.append(infos, creer); return item; @@ -84,6 +90,21 @@ async function creerSurSiteMairie(evenement) { await browser.tabs.create({ url: URL_FORMULAIRE_MAIRIE }); } +// Sans ce retour, la promesse du clic échouait en silence : le bouton paraissait +// mort et la panne était indiagnosticable, y compris pour nous. Le détail +// technique est affiché volontairement — c'est ce qui permet de nommer la cause +// sans ouvrir la console. Le F5 couvre le cas de la page orpheline (extension +// rechargée dans about:debugging alors que la liste restait ouverte). +function rendreEchecCreation(erreur) { + console.error("Échec de l'ouverture du formulaire mairie", erreur); + + etat.replaceChildren(); + const message = document.createElement("p"); + message.className = "etat-erreur"; + message.textContent = `Impossible d'ouvrir le formulaire mairie : ${erreur.message}. Recharge la page (F5), puis réessaie.`; + etat.append(message); +} + function rendreErreur(typeErreur) { etat.replaceChildren();