Changeset 14f7cb2 in Klonkt for src/routes/posts.js


Ignore:
Timestamp:
08/06/2026 09:10:41 AM (5 weeks ago)
Author:
Claude (agent) <aiclaude@…>
Branches:
main
Children:
68a4d1b
Parents:
0e27e54
git-author:
Robin <roboburr@…> (08/06/2026 09:10:40 AM)
git-committer:
Claude (agent) <aiclaude@…> (08/06/2026 09:10:41 AM)
Message:

Eén leespad voor reacties (shaer-9e9 fase 2)

De tussentabel is nu ook voor LEZEN de bron. getReaction(slug, uri) vervangt
getMyReactions en getTimelineReaction, die dezelfde vraag beantwoordden uit twee
verschillende bronnen -- de reden dat een like in de Krant en dezelfde like op de
interact-pagina een andere knopstand konden tonen.

Vijf lezers omgezet: de interact-pagina en zijn twee toggles, en de twee toggles
in de Krant. Plus de C2S-tijdlijn, waar shaer:liked en shaer:boosted niet meer
uit de afgeleide kolom komen. Die laatste gaat via getReactionsFor: één query
voor de hele pagina, want per rij vragen zou een consistentiebug hebben geruild
voor een N+1.

Mag alleen ná scripts/backfill-reactions.mjs. Een reactie van vóór fase 1 staat
alleen in de kolom en is voor getReaction onzichtbaar -- stil, want een
ontbrekende rij is geen fout. Er staat nu een test die precies dat vastlegt, zodat
de volgorde-eis uitvoerbaar is en niet alleen opgeschreven.

Robin heeft bevestigd dat de likes van 09:01 via de KRANT gingen, dus het
schrijven van fase 1 is op de webroute bewezen -- dat was de poort voor deze
stap, want anders zou de knop daar nu stuk gaan in plaats van scheef te lopen.

Suite 430/430.

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/routes/posts.js

    r0e27e54 r14f7cb2  
    806806    liked: !!req.query.liked,
    807807    boosted: !!req.query.boosted,
    808     reacted: (site && uri) ? ActivityPubService.getMyReactions(site.slug, uri) : { liked: false, boosted: false },
     808    reacted: (site && uri) ? ActivityPubService.getReaction(site.slug, uri) : { liked: false, boosted: false },
    809809    siteTitle: site ? site.title : '',
    810810  });
     
    839839  let on = false;
    840840  if (site && uri) {
    841     on = !ActivityPubService.getMyReactions(site.slug, uri).liked;
     841    on = !ActivityPubService.getReaction(site.slug, uri).liked;
    842842    ActivityPubService.resolveRemoteNote(uri)
    843843      .then((note) => note && ActivityPubService.sendInteraction(site, on ? 'like' : 'unlike', note.object_uri || uri, note.actor_uri))
     
    857857  let on = false;
    858858  if (site && uri) {
    859     on = !ActivityPubService.getMyReactions(site.slug, uri).boosted;
     859    on = !ActivityPubService.getReaction(site.slug, uri).boosted;
    860860    ActivityPubService.resolveRemoteNote(uri)
    861861      .then((note) => {
     
    12801280  let on = false;
    12811281  if (site && note) {
    1282     on = !ActivityPubService.getTimelineReaction(site.slug, note).liked;
     1282    on = !ActivityPubService.getReaction(site.slug, note).liked;
    12831283    try { await ActivityPubService.sendInteraction(site, on ? 'like' : 'unlike', note, (req.body.author || '').toString()); } catch (e) { /* ignore */ }
    12841284    ActivityPubService.setReaction(site.slug, note, 'like', on);
     
    12941294  let on = false;
    12951295  if (site && note) {
    1296     on = !ActivityPubService.getTimelineReaction(site.slug, note).boosted;
     1296    on = !ActivityPubService.getReaction(site.slug, note).boosted;
    12971297    try { await ActivityPubService.sendInteraction(site, on ? 'boost' : 'unboost', note, (req.body.author || '').toString()); } catch (e) { /* ignore */ }
    12981298    ActivityPubService.setReaction(site.slug, note, 'boost', on); // instant UI state
Note: See TracChangeset for help on using the changeset viewer.