Changeset 21ef238 in Klonkt for src/routes/activitypub.js
- Timestamp:
- 08/10/2026 04:53:05 PM (4 weeks ago)
- Branches:
- main
- Children:
- e215090
- Parents:
- 41de7cb
- File:
-
- 1 edited
-
src/routes/activitypub.js (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/routes/activitypub.js
r41de7cb r21ef238 492 492 const incoming = new Map(AP.messageRowsByUri(auth.site.slug, refs.filter((r) => r.direction === 'in').map((r) => r.ref)) 493 493 .map((m) => [m.object_uri, m])); 494 const items = []; 494 // PAREN, geen losse lijst: een kop levert niet altijd een item op (dichte 495 // poort, ontbrekende rij), en dan zou de aanroeper op index koppelen en de 496 // telling aan het verkeerde gesprek hangen. Stil, en pas te zien als iemand 497 // een badge op de verkeerde naam ziet staan. 498 const pairs = []; 495 499 for (const r of refs) { 496 500 if (r.direction === 'in') { … … 498 502 if (!m) continue; 499 503 if (!(P.messagesAllowed || m.help_request || guardianUris.has(m.actor_uri))) continue; 500 items.push(messageItem(m, ctx));504 pairs.push({ head: r, item: messageItem(m, ctx) }); 501 505 } else { 502 506 const n = AP.getOutboxNote(base, r.ref); 503 507 // Je eigen woorden blijven van jou: een dichte messages-poort verbergt 504 508 // niet wat je zelf gezegd hebt. 505 if (n) items.push(sentItem(n, { me, mine }));509 if (n) pairs.push({ head: r, item: sentItem(n, { me, mine }) }); 506 510 } 507 511 } 508 return items;512 return pairs; 509 513 } 510 514 … … 513 517 if (!auth || auth.site.slug !== req.params.slug) return res.status(403).end(); 514 518 const heads = AP.conversationHeads(auth.site.slug); 515 const items = conversationItems(req, auth, heads); 519 const pairs = conversationItems(req, auth, heads); 520 const items = pairs.map((x) => x.item); 521 // Ongelezen per gesprek (shaer-frontend-3tx): een COUNT, geen bijgehouden 522 // getal. Hij hangt aan het NIEUWSTE kopje van elke persoon -- er kunnen er 523 // twee zijn (zie conversationHeads) en het aantal hoort bij het gesprek, niet 524 // bij een bericht. 525 // 526 // AS2 heeft geen term voor ongelezen; dit is per-lezer-interactiestatus, 527 // dezelfde categorie als shaer:liked. Niet in totalItems persen: dat betekent 528 // 'hoeveel er zijn' en niet 'hoeveel jij nog niet zag'. 529 const ongelezen = AP.unreadPerConversation(auth.site.slug); 530 const gezien = new Set(); 531 for (const { head, item } of pairs) { 532 if (gezien.has(head.other)) continue; 533 gezien.add(head.other); 534 const u = ongelezen.get(head.other); 535 if (!u) continue; 536 item.object['shaer:unread'] = u.n; 537 // Een zwaai is geen aantal maar een zetje van een guardian: eigen teken. 538 if (u.wave) item.object['shaer:unreadWave'] = true; 539 } 516 540 AP.sendAP(res, { 517 541 '@context': AP.AP_CONTEXT, … … 533 557 limit: req.query.limit, 534 558 }); 535 const items = conversationItems(req, auth, page.rows) ;559 const items = conversationItems(req, auth, page.rows).map((x) => x.item); 536 560 // De paginagrootte reist mee in next: vroeg je om 30, dan hoort de volgende 537 561 // pagina er ook 30 te zijn. Zonder dit wordt hij stilletjes de standaard, en
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)