Changeset 54b027a in Klonkt for src/routes/guardian.js


Ignore:
Timestamp:
08/13/2026 08:15:56 PM (4 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
44dfbd2
Parents:
47db4b5
Message:

Een vreemde note mag de Krant niet meenemen

Robin meldde dat /news op beta niet meer werkte. Oorzaak:

_m.filter is not a function note-body.ejs:20

Drie posts van europeanpirates.eu dragen media_json = "[]": een JSON-STRING met
daarin [], niet een array. De try/catch eromheen vangt KAPOTTE json, maar niet
geldige json van het VERKEERDE TYPE. JSON.parse('"[]"') geeft netjes de string
"[]" terug, en een string heeft geen .filter.

Gevolg: één vreemde note nam de hele pagina mee. Niet de post werd overgeslagen,
de Krant lag plat. Wat er van een andere server binnenkomt is niet van ons, dus de
vorm moet op het punt van gebruik afgedwongen worden en niet aangenomen.

Zelfde wacht gezet in guardian.js, waar dezelfde parse stond. Dat is nog
vervelender: het guardian-paneel is precies het scherm dat het moet doen op het
moment dat er iets aan de hand is.

Changed files:
src/views/partials/note-body.ejs

  • Array.isArray-controle na de parse

src/routes/guardian.js

  • dezelfde controle rond media_json in het wardpaneel

New file:
test/note-body-media-shape.test.js

  • een string, een object, een getal en kapotte json slopen de pagina niet
  • en een normale lijst wordt nog steeds getoond, want een fix die alle media wegpoetst is geen fix

remarks: tegenproef gedaan. Zonder de fix vallen de string, het object en het getal
om; kapotte json en de normale lijst blijven groen. De test meet dus het gat en niet
zichzelf. Suite 937 in UTC en Europe/Amsterdam.

Onderweg twee keer mijn eigen testopzet moeten repareren (ontbrekende emojiHtml- en
thumb-helper); dat was de test, niet de code.

Nog te doen: de drie rijen op beta zelf opruimen, en uitzoeken welk pad ooit dubbel
gestringificeerd heeft. In de huidige code staat die dubbele stringify niet meer.

-robo
Co-Authored-By: Claude Opus 4.8 <noreply@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/routes/guardian.js

    r47db4b5 r54b027a  
    262262      when_text: formatDateTime(p.published || p.created_at),
    263263      cw: p.cw || null,
    264       media: p.media_json ? JSON.parse(p.media_json) : [],
     264      // Zelfde valkuil als in note-body.ejs: kapotte json gooit, maar geldige json
     265      // van het verkeerde type niet. Zonder deze wacht neemt één vreemde note van
     266      // een remote server het hele guardian-paneel mee, en dat is precies het
     267      // scherm dat het moet doen als er iets aan de hand is.
     268      media: (() => { try { const m = JSON.parse(p.media_json || '[]'); return Array.isArray(m) ? m : []; } catch { return []; } })(),
    265269      // Een post van je ward hoort er hetzelfde uit te zien als in de Krant en
    266270      // in Berichten: dezelfde partial, dus opmaak, media, quote-kaart en
Note: See TracChangeset for help on using the changeset viewer.