Changeset 9c9a3d9 in Klonkt
- Timestamp:
- 08/08/2026 01:23:14 AM (5 weeks ago)
- Branches:
- main
- Children:
- 02c6231
- Parents:
- c4b24b3
- Files:
-
- 2 edited
-
src/services/ActivityPubService.js (modified) (1 diff)
-
test/thread.test.js (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/services/ActivityPubService.js
rc4b24b3 r9c9a3d9 3473 3473 return out.length ? out.slice(0, 8) : undefined; 3474 3474 })(), 3475 // FEP-9098: de custom emoji van het antwoord (":shortcode:" -> plaatje). 3476 // Zonder deze tags rendert een reply van een Mastodon-account zijn emoji 3477 // als kale tekst (Barts punt, 8-8). Alleen naam + geschoond icoon-adres 3478 // gaan door; de rest van de vreemde tag-array blijft achter. 3479 tag: (() => { 3480 const j = extractEmojiTags(o.tag); 3481 if (!j) return undefined; 3482 const out = JSON.parse(j) 3483 .map((t) => ({ type: 'Emoji', name: t.name, icon: { type: 'Image', url: safeUrl(t.icon && (t.icon.url || (Array.isArray(t.icon) && t.icon[0] && t.icon[0].url))) } })) 3484 .filter((t) => t.icon.url) 3485 .slice(0, 30); 3486 return out.length ? out : undefined; 3487 })(), 3475 3488 'shaer:author': actorInfo(authors.get(actorUri), actorUri), 3476 3489 })).sort((a, b) => String(a.published || '').localeCompare(String(b.published || ''))); -
test/thread.test.js
rc4b24b3 r9c9a3d9 41 41 const antwoorden = [ 42 42 reply(1, VREEMDE, '<p>Hoi! <script>alert(1)</script></p>', '2026-08-01T10:00:00Z'), 43 reply(2, TANTE, '<p>Dag lieverd</p>', '2026-08-01T09:00:00Z'), 43 { ...reply(2, TANTE, '<p>Dag lieverd :hartje:</p>', '2026-08-01T09:00:00Z'), 44 // FEP-9098 zoals Mastodon hem stuurt, plus een niet-Emoji-tag en een 45 // emoji zonder bruikbaar icoon: alleen de echte hoort erdoor te komen. 46 tag: [ 47 { type: 'Emoji', name: ':hartje:', icon: { type: 'Image', url: 'https://203.0.113.20/emoji/hartje.png' } }, 48 { type: 'Emoji', name: ':kapot:', icon: {} }, 49 { type: 'Hashtag', name: '#muziek' }, 50 ] }, 44 51 reply(3, GEBLOKT, '<p>naar bericht</p>', '2026-08-01T11:00:00Z'), 45 52 ]; … … 70 77 assert.equal(uit.hidden, 0); 71 78 assert.ok(uit.notes.every((n) => n.attributedTo !== GEBLOKT)); 79 // FEP-9098: alleen de echte emoji komt door -- niet de hashtag, niet de 80 // emoji zonder icoon -- en het icoon-adres is geschoond. 81 const tags = uit.notes[0].tag; 82 assert.equal(tags.length, 1); 83 assert.equal(tags[0].name, ':hartje:'); 84 assert.equal(tags[0].icon.url, 'https://203.0.113.20/emoji/hartje.png'); 85 assert.ok(!uit.notes[1].tag, 'een antwoord zonder emoji draagt geen tag-veld'); 72 86 }); 73 87
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)