De Ward PWA: de feed en de reddingsboei
Plak 2. Nu valt er iets te doen op /ward in plaats van alleen te kijken.
DE FEED. Dezelfde bron als de Krant (getTimeline) en dezelfde partial
voor de body (renderNoteBody), zodat een post er overal hetzelfde uitziet:
opmaak, media, quote-kaart, embed. Alleen kale content doorgeven zou een
lege regel opleveren waar een foto hoort, precies de fout die het
guardian-dashboard ooit had.
DE BOEI, en die is hier BETER dan in de app. Shaer maakt een
schermafdruk van de kaart, met al het gedoe van buiten beeld renderen.
Op de server weten we wélke note het is, dus de hulpvraag draagt de note
zelf mee. Een guardian ziet daardoor de echte post en niet een plaatje
dat er ooit op leek.
Slepen met pointer-events, want dat is het enige dat op een telefoon en
met een muis hetzelfde doet. touch-action: none op de boei houdt de
pagina stil tijdens het slepen; zonder dat vecht het met scrollen en
verlies je hem halverwege. De kaart eronder licht op, want mikken met een
vinger zonder terugkoppeling is gokken. Een tik zonder slepen vraagt hulp
zonder dat er een post bij hoort, en de grote knop bovenaan doet
hetzelfde.
Changed files:
src/routes/ward.js
- /api/feed met afgemaakte body per kaart
- /api/help: direct bericht aan ALLE guardians, met de note erbij;
409 als er geen guardians zijn, want dan is er niets te vragen
src/views/pages/ward.ejs
- feed-sectie, zwevende boei, hulpdialoog
src/assets/js/ward.js
- kaarten tekenen, slepen, mikken, versturen
src/assets/css/ward.css
- kaarten, boei, dialoog, sr-only
src/services/i18n.js
- acht nieuwe sleutels in nl, en, de
test/ward-pwa.test.js
- de feed levert een gerenderde body; de boei weigert zonder
guardians; een vreemde kan hem niet afvuren
remarks: 889 tests groen. Slepen is alleen in code getest, niet met een
echte vinger op een echt scherm; dat is aan Robin op dev.
-robo
Co-Authored-By: Claude Opus 4.8 <noreply@…>