diff --git a/ROADMAP.md b/ROADMAP.md index 1096861..69675c3 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -1,6 +1,6 @@ # ROADMAP — Baustelle PWA -Stand: 2026-10-15 · Gegenstück: `data/bericht` (Modul-Version 1.7.1) +Stand: 2026-10-19 · Gegenstück: `data/bericht` (Modul-Version 1.7.1) Die PWA hat kein eigenes Backend — alles läuft über `custom/bericht/api/`. Punkte, die eine API-Änderung brauchen, sind mit **[API]** markiert und stehen zusätzlich in der ROADMAP des @@ -31,6 +31,23 @@ Bericht-Moduls. --- +## 8. Knopf „Geteiltes ablegen" bleibt dauerhaft stehen (gemeldet 2026-10-19) + +Eddy: *„bei der App Baustelle ist permanent ein Button relativ weit unten angezeigt über den aufgelisteten +Aufträgen: Geteiltes ablegen"*. +- Ursache: `checkPendingShare()` zeigte den Knopf, sobald IRGENDEIN `shared_payload` in IndexedDB lag — auch ein + leeres (Teilen abgebrochen, nichts mitgekommen). `share.html` meldete dann „Es kam nichts an" und ließ den Rest + liegen → Knopf für immer. Wer etwas Geteiltes nicht ablegen wollte, kam ebenfalls nicht davon los. +- [x] ✅ 19.10.2026: Leere Pakete räumt die App selbst weg (kein Knopf); „Es kam nichts an" löscht den Rest; + Knopf zeigt „(Notiz)", wenn nur Text geteilt wurde; `share.html` hat „Verwerfen" mit Rückfrage in der Seite. + Auf der Testinstanz durchgespielt (leer → kein Knopf; Notiz → Knopf → Verwerfen → weg). +- [ ] Am Handy gegenprüfen: Knopf ist nach dem Update weg (beim ersten Laden räumt die App den leeren Rest ab). + +### Befunde aus der AVIF-Prüfung in Bericht (19.10.2026, nicht geändert) +- [ ] Ist eine Maximalgröße für Fotos gesetzt (`photo_maxside` > 0), behält das im Browser verkleinerte JPEG in + `app.js` `uploadPhoto` seinen Originalnamen — ein `.avif`/`.webp` wird dann vom Server abgelehnt. +- [ ] Beim Verkleinern im Browser (Canvas → JPEG) wird Transparenz schwarz. + ## 7. Galerie-Auswahl: „permission"-Fehler ab dem 3. Foto (gemeldet 2026-09-30) Befund (Prod-Zugriffslog 30.09., Auftrag 114 / SO2609-0088, JHB Bio): erster Anlauf 19:40:21 — diff --git a/app.js b/app.js index 3738078..3a502a3 100644 --- a/app.js +++ b/app.js @@ -1843,21 +1843,29 @@ router.on('/settings', async () => { * bleiben in IndexedDB liegen; ohne diesen Hinweis wuerde sie niemand je wiederfinden. */ async function checkPendingShare() { if (document.getElementById('shared-banner')) return; - let n = 0, vorhanden = false; + let n = 0, notiz = false; try { const p = await idb.get('shared_payload'); - if (p) { vorhanden = true; n = (p.files || []).length; } - else { + if (p) { + n = (p.files || []).length; + notiz = !!((p.title || '').trim() || (p.text || '').trim() || (p.url || '').trim()); + } else { const alt = await idb.get('shared_files'); // altes Format - if (alt && alt.length) { vorhanden = true; n = alt.length; } + if (alt && alt.length) n = alt.length; + } + // Ein Paket OHNE Inhalt (Teilen abgebrochen, nichts mitgekommen) hielt den Knopf für immer + // stehen: share.html meldete „Es kam nichts an" und ließ den Rest liegen (Eddy 19.10.2026). + if (!n && !notiz) { + await idb.del('shared_payload').catch(() => {}); + await idb.del('shared_files').catch(() => {}); + return; } } catch (_) { return; } - if (!vorhanden) return; const b = document.createElement('button'); b.id = 'shared-banner'; b.className = 'shared-banner'; - b.textContent = '📤 Geteiltes ablegen' + (n ? ' (' + n + ' Bild' + (n > 1 ? 'er' : '') + ')' : ''); + b.textContent = '📤 Geteiltes ablegen' + (n ? ' (' + n + ' Bild' + (n > 1 ? 'er' : '') + ')' : ' (Notiz)'); b.addEventListener('click', () => { location.href = 'share.html'; }); document.body.appendChild(b); } diff --git a/share.html b/share.html index 4663d08..ee3c268 100644 --- a/share.html +++ b/share.html @@ -284,8 +284,9 @@ async function renderPicker() {
Lade Aufträge…
-
+
+
`; @@ -310,6 +311,19 @@ async function renderPicker() { }); document.getElementById('btn-store').addEventListener('click', store); + // Verwerfen (Eddy 19.10.2026): wer etwas Geteiltes nicht ablegen will, kam bisher nicht mehr + // davon los — der Knopf in der App blieb stehen. Rückfrage in der Seite, kein Browser-Dialog. + document.getElementById('btn-discard').addEventListener('click', () => { + const box = document.getElementById('share-actions'); + box.innerHTML = `

Geteilte Inhalte wirklich verwerfen? Sie werden nicht abgelegt.

+ + `; + document.getElementById('btn-discard-yes').addEventListener('click', async () => { + await clearPayload(); + location.href = './'; + }); + document.getElementById('btn-discard-no').addEventListener('click', () => renderPicker()); + }); bindeKarten(main()); // Schnellzugriff klickbar machen if (vorwahl) waehleAuftrag(vorwahl.id, vorwahl.ref, vorwahl.name, vorwahl.ort); loadOrders(''); @@ -387,6 +401,8 @@ async function store() { (async function boot() { payload = await readPayload(); if (!payload || (!payload.files.length && !payload.text && !payload.title && !payload.url)) { + // Leeren Rest wegräumen — sonst bleibt der Knopf „Geteiltes ablegen" in der App für immer stehen + await clearPayload(); main().innerHTML = `
📭
Es kam nichts an.
Teile Bilder oder Text aus WhatsApp erneut mit „Baustelle".
`;