Changeset 55eca8b in Klonkt for src/services


Ignore:
Timestamp:
07/30/2026 12:49:18 PM (6 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
1a2f206
Parents:
6a99668
Message:

Inkomende replies op je eigen posts bereiken nu ook de app

Robins melding (30-7): de reply komt niet binnen bij de ander. Hij kwam
wel binnen: als interactie (het commentaar-mechaniek van de web-kant),
waar de inbound-handler bewust stopt voordat de mention-opslag draait.
Maar de C2S-leesroute van de app serveerde alleen timeline, mentions en
(sinds vandaag) eigen verzonden notes; een reply op je eigen post viel
er dus overal buiten en de app van de ontvanger bleef leeg.

De read krijgt een vierde leg: getReplyMessages serveert de
reply-interacties op je eigen posts als Create(Note), zelfde vorm als
de andere legs (media, quote en embed rijden de opgeslagen JSON mee,
Mention-tag zodat de app de afzender als gesprek groepeert, inReplyTo
naar de eigen post).

Changed files:
src/services/ActivityPubService.js

  • getReplyMessages(slug): reply-interacties via posts->sites join

src/routes/activitypub.js

  • C2S inbox-read: replies-leg naast timeline, messages en sent

test/sent-notes.test.js

  • inkomende reply wordt geserveerd voor de posteigenaar (met media), en alleen voor die eigenaar

remarks: dit moet op BEIDE kanten draaien om de cirkel rond te maken:
jouw server toont jou de replies van Nessie, koffieengaar moet updaten
om Nessie de jouwe te tonen.

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/services/ActivityPubService.js

    r6a99668 r55eca8b  
    29002900 * skipped here and stay a post.
    29012901 */
     2902// Inbound replies on YOUR posts, for the app's message stream. They live in
     2903// ap_interactions (the web's comment machinery) and deliberately NOT in
     2904// ap_mentions (the mention store returns early for replies-to-us), so the
     2905// C2S read missed them entirely: a reply arrived at the other side
     2906// everywhere EXCEPT in the other's app (Robins melding, 30-7: "komt niet
     2907// binnen bij de ander").
     2908export function getReplyMessages(slug, limit) {
     2909  try {
     2910    return db.prepare(`
     2911      SELECT i.object_uri, i.actor_uri, i.actor_name, i.actor_handle, i.actor_icon, i.actor_url,
     2912             i.content, i.published, i.created_at, i.parent_uri, i.post_id,
     2913             i.emoji_json, i.actor_emoji_json, i.media_json, i.quote_json, i.embed_json
     2914      FROM ap_interactions i
     2915      JOIN posts p ON p.id = i.post_id
     2916      JOIN sites s ON s.id = p.site_id
     2917      WHERE s.slug = ? AND i.kind = 'reply'
     2918      ORDER BY COALESCE(i.published, i.created_at) DESC LIMIT ?`).all(slug, limit || 60);
     2919  } catch { return []; }
     2920}
     2921
    29022922export function getDirectMessages(slug, limit) {
    29032923  try {
     
    42004220  linkifyBody, bakePostContent, bakePostContentWithMentions, listFollowers, removeFollower, listConnections,
    42014221  noteVisibility, belongsInTimeline, playerUrlFor, isRejectedObject, rejectInteraction, interactionReportTarget,
    4202   getMessages, notificationsSeenAt, ingestOutboxActivity, c2sVisibility, actorDisplay, buildActorRef, prefersEnriched, selfAuthor,
     4222  getMessages, notificationsSeenAt, ingestOutboxActivity, c2sVisibility, actorDisplay, buildActorRef, prefersEnriched, selfAuthor, getReplyMessages,
    42034223};
Note: See TracChangeset for help on using the changeset viewer.