diff --git a/arbeitskacheln/23_flutter_begleitapp.md b/arbeitskacheln/23_flutter_begleitapp.md index f6ebb0d..acfdd06 100644 --- a/arbeitskacheln/23_flutter_begleitapp.md +++ b/arbeitskacheln/23_flutter_begleitapp.md @@ -90,6 +90,13 @@ Build-Host, kein Dauerbetrieb der App dort (App läuft auf Endgeräten). — ein normaler Frontend-Deploy mit `rsync --delete` hätte den Ordner sonst gelöscht, real passiert und behoben). Download-Link im Portal nur für Administrator sichtbar (`AdminPage.tsx`). + - **Bugfix 2026-09-10:** Portal-Link war fest auf `v0.5.apk` verlinkt, + dadurch nach dem v0.6.0-Build stale (zeigte auf eine ältere Version, ohne + dass ein Frontend-Deploy das automatisch mitbekommen hätte). + `ScanAppDownloadHinweis` liest jetzt zur Laufzeit `/downloads/ + version.json` (dieselbe Quelle wie der In-App-Update-Check) statt eine + Versionsnummer im Link fest zu hinterlegen — bleibt bei jedem künftigen + APK-Build automatisch aktuell. - **2026-09-10:** `/opt/flutter-projects` auf `192.168.1.236` lag auf dem Root-Volume — nach `/mnt/projekte/flutter` (eigener ZFS-Mount, mehr Platz) verschoben, `/opt/flutter-projects` ist jetzt ein Symlink dorthin. diff --git a/frontend/src/pages/AdminPage.tsx b/frontend/src/pages/AdminPage.tsx index f5d43dd..0eb5b94 100644 --- a/frontend/src/pages/AdminPage.tsx +++ b/frontend/src/pages/AdminPage.tsx @@ -360,12 +360,33 @@ export function AdminPage() { )} {aktiverTab === null &&

Keine Bereiche für deine Rolle verfügbar.

} - {istAdmin && ( -

- MABEA Scan-App (Android, Prototyp) herunterladen — - FLUT-001-Sondierung, kein Produktivstand. -

- )} + {istAdmin && } ); } + +// FLUT-001: Version/APK-URL werden zur Laufzeit aus version.json gelesen +// (statt fest verlinkt) - sonst veraltet der Link bei jedem neuen APK-Build +// im Portal, ohne dass ein Frontend-Deploy das mitbekommt (genau das ist +// vorher passiert: Link zeigte noch auf v0.5, obwohl v0.6.0 längst live war). +function ScanAppDownloadHinweis() { + const [info, setInfo] = useState<{ version: string; apk_url: string } | null>(null); + + useEffect(() => { + fetch("/downloads/version.json") + .then((r) => (r.ok ? r.json() : null)) + .then((daten) => setInfo(daten)) + .catch(() => setInfo(null)); + }, []); + + return ( +

+ {info ? ( + MABEA Scan-App (Android, Prototyp) v{info.version} + ) : ( + "MABEA Scan-App (Android, Prototyp)" + )}{" "} + herunterladen — FLUT-001-Sondierung, kein Produktivstand. +

+ ); +}