Changeset 5e16b8a in Klonkt for src/routes/activitypub.js


Ignore:
Timestamp:
08/15/2026 07:33:20 AM (4 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
e1da6a1
Parents:
732272a
Message:

AP: eerste pagina serveren op elke collectie die first belooft

/ap/users/dev/library gaf 200 met first en last, maar ?page=1 gaf de
bibliotheek opnieuw: zelfde id, type Library, first weer naar zichzelf.
open.audio volgde die verwijzing bij "search a remote object" en gaf een
500 op onze URL terug.

pagedCollection kon dit al; vier routes gaven ?page= door en vier niet
(featured, tracks, playlists, library, library/followers). De bouwers
nemen nu een page aan en de routes reiken paginaNr(req) aan.

De test loopt over HTTP en in een lus over alle collecties. Over HTTP
omdat de unit-test op buildLibrary er al stond en groen was terwijl het
gat openstond -- het zat in de doorgifte, niet in de bouwer. In een lus
omdat het gat juist ontstond doordat de helft van de routes het wel had:
een rijtje losse gevallen vraagt om dezelfde vergeetachtigheid. Hij vond
meteen featured, die ik in deze ronde ook was vergeten.

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/routes/activitypub.js

    r732272a r5e16b8a  
    11151115     ORDER BY pinned DESC, COALESCE(published_at, created_at) ASC LIMIT 20`
    11161116  ).all(site.id);
    1117   AP.sendAP(res, AP.buildFeatured(baseUrl(req), site, posts));
     1117  AP.sendAP(res, AP.buildFeatured(baseUrl(req), site, posts, { page: paginaNr(req) }));
    11181118});
    11191119
     
    11301130  const site = publicSite(req.params.slug);
    11311131  if (!site) return res.status(404).end();
    1132   AP.sendAP(res, AP.listPlaylistsAP(baseUrl(req), site, wantsEnriched(req, res)));
     1132  AP.sendAP(res, AP.listPlaylistsAP(baseUrl(req), site, wantsEnriched(req, res), { page: paginaNr(req) }));
    11331133});
    11341134
     
    11391139  const site = publicSite(req.params.slug);
    11401140  if (!site) return res.status(404).end();
    1141   AP.sendAP(res, AP.buildTrackCollection(baseUrl(req), site, AP.siteOpenTracks(site.id, { alles: await magAlles(req, site.slug) })));
     1141  AP.sendAP(res, AP.buildTrackCollection(baseUrl(req), site, AP.siteOpenTracks(site.id, { alles: await magAlles(req, site.slug) }), { page: paginaNr(req) }));
    11421142});
    11431143
     
    11501150// Openbaar, want alles erin is fedi_open. Er valt dus niets goed te keuren en de
    11511151// volgerslijst blijft leeg: wie ons volgt volgt de ACTOR, niet de bak.
     1152//
     1153// `?page=` MOET hier doorgegeven worden. Zonder dat adverteert de wortel een
     1154// `first` die op zichzelf uitkomt: de lezer volgt hem, krijgt weer een `Library`
     1155// in plaats van een pagina, en klapt eruit -- open.audio gaf op 15-8 een 500 op
     1156// precies deze URL. Dezelfde les als bij de outbox (shaer-sk4): een `first`
     1157// beloven is een pagina beloven.
    11521158router.get('/ap/users/:slug/library', (req, res) => {
    11531159  const site = publicSite(req.params.slug);
    11541160  if (!site) return res.status(404).end();
    1155   AP.sendAP(res, AP.buildLibrary(baseUrl(req), site, AP.siteOpenTracks(site.id)));
     1161  AP.sendAP(res, AP.buildLibrary(baseUrl(req), site, AP.siteOpenTracks(site.id), { page: paginaNr(req) }));
    11561162});
    11571163
     
    11611167  const site = publicSite(req.params.slug);
    11621168  if (!site) return res.status(404).end();
    1163   AP.sendAP(res, AP.pagedCollection(`${AP.libraryId(baseUrl(req), site)}/followers`, []));
     1169  AP.sendAP(res, AP.pagedCollection(`${AP.libraryId(baseUrl(req), site)}/followers`, [], { page: paginaNr(req) }));
    11641170});
    11651171
Note: See TracChangeset for help on using the changeset viewer.