Changeset 3597763 in Klonkt for src/middleware/render.js


Ignore:
Timestamp:
07/26/2026 09:37:48 AM (6 weeks ago)
Author:
Robin Genis <roboburr@…>
Branches:
main
Children:
ef1853c
Parents:
b5c2538
Message:

Web-timeline: custom-emoji + embedded quote-kaart (afgekeken van Shaer)

De Shaer-apps renderen FEP-9098 custom-emoji's en de FEP-044f quote-kaart
inline; de Klonkt web-timeline toonde nog letterlijke :shortcodes: en geen
quote. Nu rendert de web-nieuwsfeed dezelfde dingen server-side: emoji's in
content, auteur-naam en booster-naam, plus de geneste quote-kaart (avatar +
naam + content + thumbnail). De byline (avatar/naam/handle) en de boost-icon
(SVG, themebaar) had de web-UI al.

De data was al aanwezig op de timeline-rijen (emoji_json, author_emoji_json,
reblog_emoji_json, quote_json); dit is puur de render-kant.

New file:
src/services/NoteRender.js

  • pure helpers: emojiMap (beide vormen), emojiHtml (tag-bewust, skip code/pre), emojiName (escape + emoji), parseQuote

src/views/partials/quote-card.ejs

  • geneste quote-kaart (mirror van de Shaer QuoteCard)

test/note-render.test.js

  • 7 tests voor de render-helpers

Changed files:
src/middleware/render.js

  • emojiHtml/emojiName/noteQuote als template-helpers in de render-locals

src/views/partials/tl-item.ejs

  • content, auteur-naam en booster-naam via de emoji-helpers; quote-kaart erna

src/views/pages/news.ejs

  • CSS: img.emoji (inline, geen media-styling) + .tl-quote* (themebaar)

remarks: 187 tests groen (was 180). Visueel geverifieerd via een standalone
render van tl-item met echte emoji-urls. Volgende surfaces (messages, profiel,
cirkel) kunnen dezelfde helpers hergebruiken.

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/middleware/render.js

    rb5c2538 r3597763  
    1919import { getSetting, apEnabled } from '../services/SettingsService.js';
    2020import { isPremium as isPremiumInstance, premiumEnabled, premiumUnlocked } from '../services/PatreonService.js';
     21import { emojiHtml, emojiName, parseQuote } from '../services/NoteRender.js';
    2122import ActivityPubService from '../services/ActivityPubService.js';
    2223import { imgProxyUrl } from '../services/ThumbnailService.js';
     
    164165    formatDate,
    165166    formatDateTime,
     167    // Render the Shaer-native bits server-side so the web timeline matches the
     168    // apps: FEP-9098 custom emojis in content/names, and the FEP-044f quote.
     169    emojiHtml,   // (html, emoji_json) → HTML with :shortcode: as <img>
     170    emojiName,   // (text, emoji_json) → escaped name with :shortcode: as <img>
     171    noteQuote: parseQuote,   // (quote_json) → the resolved quoted-post object or null
    166172    // Rewrite a local /media/<file> cover to its on-demand downscaled thumbnail
    167173    // (crisp grid/list images). External URLs + already-thumb URLs pass through.
Note: See TracChangeset for help on using the changeset viewer.