Changeset 6e9bc70 in Klonkt for src/routes/activitypub.js
- Timestamp:
- 10/12/2026 04:15:08 PM (2 days ago)
- Branches:
- main
- Children:
- 61d52ed
- Parents:
- 746d98a
- File:
-
- 1 edited
-
src/routes/activitypub.js (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/routes/activitypub.js
r746d98a r6e9bc70 20 20 import OAuth from '../services/OAuthService.js'; 21 21 import * as Guardianship from '../services/guardianship/index.js'; 22 import * as ConversationKey from '../services/conversation-key.js'; 22 23 import * as Migration from '../services/MigrationService.js'; 23 24 import { getPrimarySite } from '../middleware/site.js'; … … 626 627 } 627 628 } 629 // WELK GESPREK, EN MET WIE (shaer-mbji). De client kon dat afleiden uit de 630 // adressering van de note -- maar een binnenkomer draagt die niet mee in zijn 631 // kaart, dus een bericht van Anna aan jou en Ben las als iets van Anna alleen. 632 // De server weet het: de sleutel staat in de kop. Twee termen, zodat een 633 // client die alleen de deelnemers wil niet een sleutel hoeft te ontleden. 634 for (const { head, item } of pairs) { 635 const obj = item && item.object; 636 if (!obj || !head.other) continue; 637 obj['shaer:conversation'] = head.other; 638 obj['shaer:participants'] = ConversationKey.participantsOfKey(head.other); 639 } 628 640 return pairs; 629 641 } … … 673 685 const auth = OAuth.verifyBearer(req.headers.authorization); 674 686 if (!auth || auth.site.slug !== req.params.slug) return res.status(403).end(); 675 const other = String(req.query.with || ''); 676 if (!/^https?:\/\//i.test(other)) return res.status(400).json({ error: 'with must be an actor URI' }); 687 // EÉN OF MEER `with` (shaer-mbji). Eén is het gesprek met die persoon, zoals 688 // altijd; meer is de zachte groep van precies die mensen. De sleutel komt 689 // uit dezelfde functie als bij het schrijven, dus {Anna, Ben} en {Ben, Anna} 690 // vragen hetzelfde gesprek op. 691 const withs = [].concat(req.query.with || []).map(String); 692 if (!withs.length || !withs.every((u) => /^https?:\/\//i.test(u))) { 693 return res.status(400).json({ error: 'with must be one or more actor URIs' }); 694 } 695 const other = ConversationKey.conversationKey(withs); 696 if (!other) return res.status(400).json({ error: 'with must be one or more actor URIs' }); 677 697 const page = AP.conversationHistory(auth.site.slug, other, { 678 698 before: req.query.before ? String(req.query.before) : null, … … 684 704 // dan klopt het ritme van een 'load more' niet meer met wat de gebruiker ziet. 685 705 const size = req.query.limit ? `&limit=${encodeURIComponent(String(req.query.limit))}` : ''; 686 const self = `${baseUrl(req)}/ap/users/${encodeURIComponent(auth.site.slug)}/messages?with=${encodeURIComponent(other)}`; 706 // Elke deelnemer een eigen `with`, zodat de next-link hetzelfde gesprek 707 // opvraagt. De sleutel zelf er kaal in zetten zou bij een groep een spatie in 708 // de URL leggen, en wie die als één adres leest vraagt iets anders op. 709 const withQuery = ConversationKey.participantsOfKey(other).map((u) => `with=${encodeURIComponent(u)}`).join('&'); 710 const self = `${baseUrl(req)}/ap/users/${encodeURIComponent(auth.site.slug)}/messages?${withQuery}`; 687 711 AP.sendAP(res, { 688 712 '@context': AP.AP_CONTEXT,
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)