Changeset d1075a1 in Klonkt


Ignore:
Timestamp:
08/08/2026 05:41:58 PM (4 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
3a0ca0f
Parents:
4838760
Message:

Eerst bakken, dan linken zoeken -- en de verloren kolomselectie terug

Twee vondsten van het toestel (shaer-k3f, vervolg op 4838760):

EERST BAKKEN. firstExternalUrl leest <a href>-ankers, en de web-editor
bakt die er bij het opslaan al in -- maar een post uit de APP is platte
tekst waarin de URL nog geen anker is. Het C2S-pad zag dus nooit een
link en een app-post kreeg nooit een kaart, terwijl de preview hem net
wel beloofd had. deliverCreate bakt de inhoud nu voor het zoeken; de
test dekt voortaan het app-geval (platte tekst) in plaats van het
editor-geval.

DE VERLOREN SELECTIE. De kolomtoevoeging aan de outbox-query is bij het
invlechten van parallel werk verloren gegaan: de friend-poot vroeg
row.embed_json aan rijen waar de query hem nooit in had gestopt. Een
diagnoseregel op dev wees het exact aan (rij gevonden, poort open,
embed: false). De query draagt quote_json en embed_json nu echt, en de
route is weer schoon.

Op het toestel bewezen: preview in de composer, posten, en de eigen
feedkaart draagt de kaart. Alle 723 groen.

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

Files:
3 edited

Legend:

Unmodified
Added
Removed
  • src/routes/activitypub.js

    r4838760 rd1075a1  
    179179  const fanClause = audience === 'friend' ? '' : "AND (fan_only IS NULL OR fan_only = 0)";
    180180  const posts = db.prepare(
    181     `SELECT id, slug, title, content, cover_image_url, cover_video_url, nsfw, content_warning, c2s_attachments, published_at, created_at
     181    `SELECT id, slug, title, content, cover_image_url, cover_video_url, nsfw, content_warning, c2s_attachments, quote_json, embed_json, published_at, created_at
    182182     FROM posts WHERE site_id = ? AND status = 'published' ${fanClause}
    183183     ORDER BY COALESCE(published_at, created_at) DESC LIMIT 20`
  • src/services/ActivityPubService.js

    r4838760 rd1075a1  
    29492949  // IS the notification.
    29502950  const quoteInboxes = [];
     2951  // EERST BAKKEN, dan pas linken zoeken (shaer-k3f, gevonden op het toestel):
     2952  // firstExternalUrl leest <a href>-ankers, en de web-editor bakt die er bij
     2953  // het opslaan al in -- maar een post uit de APP is platte tekst waarin de
     2954  // URL nog geen anker is. Zonder deze bak zag het C2S-pad dus nooit een link
     2955  // en kreeg een app-post nooit een kaart, terwijl de preview hem net wel
     2956  // beloofd had.
     2957  const gebakken = bakePostContent(post2.content || '');
    29512958  if (post2.quote_uri === undefined || post2.quote_uri === null) {
    2952     const q = await resolveOwnQuote(post2.content || '');
     2959    const q = await resolveOwnQuote(gebakken);
    29532960    if (q) {
    29542961      try { db.prepare('UPDATE posts SET quote_uri = ?, quote_actor = ? WHERE id = ?').run(q.uri, q.actor || null, post.id); } catch { /* ignore */ }
     
    29682975        if (qj) { db.prepare('UPDATE posts SET quote_json = ? WHERE id = ?').run(qj, post.id); post2 = { ...post2, quote_json: qj }; }
    29692976      } else {
    2970         const ej = await resolveExternalEmbed(post2.content || '');
     2977        const ej = await resolveExternalEmbed(gebakken);
    29712978        if (ej) { db.prepare('UPDATE posts SET embed_json = ? WHERE id = ?').run(ej, post.id); post2 = { ...post2, embed_json: ej }; }
    29722979      }
  • test/own-card.test.js

    r4838760 rd1075a1  
    4646
    4747test('een externe link in een eigen post wordt een embed-snapshot op de post', async () => {
     48  // PLATTE tekst, geen anker: zo komt een post uit de app binnen (het
     49  // C2S-pad bakt niet voor het opslaan). Op het toestel bleef precies dit
     50  // geval een kale link terwijl de web-editor wel een kaart kreeg.
    4851  db.prepare("INSERT INTO posts (id, site_id, author_id, slug, title, content, status) VALUES ('p1','s1','u1','p1','', ?, 'published')")
    49     .run(`<p>Kijk: <a href="${EXTERN}">${EXTERN}</a></p>`);
     52    .run(`<p>Kijk: ${EXTERN}</p>`);
    5053  const post = db.prepare("SELECT * FROM posts WHERE id = 'p1'").get();
    5154  await AP.deliverCreate(site, post);
Note: See TracChangeset for help on using the changeset viewer.