Changeset 19a9a1e in Klonkt for src/services
- Timestamp:
- 08/15/2026 07:43:02 AM (4 weeks ago)
- Branches:
- main
- Children:
- bec9001
- Parents:
- e1da6a1
- Location:
- src/services
- Files:
-
- 2 edited
-
ap-core.js (modified) (3 diffs)
-
music/index.js (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/services/ap-core.js
re1da6a1 r19a9a1e 265 265 * en zonder `next`. Hem naar de laatste pagina terugbuigen zou opnieuw een 266 266 * antwoord zijn dat over zichzelf liegt. 267 */ 268 export function pagedCollection(id, items, { totalItems, page = false, perPage = PAGINA_GROOTTE, alGesneden = false, extra = {} } = {}) { 267 * 268 * `ongeordend` maakt er de NIET-geordende vorm van: `Collection` met 269 * `CollectionPage` en `items`, in plaats van `OrderedCollection` met 270 * `OrderedCollectionPage` en `orderedItems`. Dat is geen dialect maar de andere 271 * helft van AS2 -- en de bibliotheek hoort daar: een platenkast heeft geen 272 * volgorde die iets betekent, en `Library` is bij Funkwhale expliciet een 273 * `Collection`. Onze outbox is wél geordend (chronologie is daar de inhoud) en 274 * blijft dus zoals hij was. 275 * 276 * De pagina draagt in die vorm ook `first` en `last`. AS2 staat dat toe -- 277 * CollectionPage erft van Collection -- en een lezer die halverwege binnenkomt 278 * kan zo terug naar het begin zonder eerst de wortel op te halen. 279 */ 280 export function pagedCollection(id, items, { totalItems, page = false, perPage = PAGINA_GROOTTE, alGesneden = false, ongeordend = false, extra = {} } = {}) { 269 281 const lijst = items || []; 270 282 const telling = totalItems === undefined ? lijst.length : totalItems; … … 283 295 '@context': AP_CONTEXT, 284 296 id: url(n), 285 type: 'OrderedCollectionPage',297 type: ongeordend ? 'CollectionPage' : 'OrderedCollectionPage', 286 298 partOf: id, 287 299 totalItems: telling, 300 ...(ongeordend ? { first: url(1), last: url(paginas) } : {}), 301 ...(extra.attributedTo ? { attributedTo: extra.attributedTo } : {}), 288 302 ...(n > 1 ? { prev: url(n - 1) } : {}), 289 303 ...(n < paginas ? { next: url(n + 1) } : {}), 290 orderedItems: deel,304 ...(ongeordend ? { items: deel } : { orderedItems: deel }), 291 305 }; 292 306 } … … 294 308 '@context': AP_CONTEXT, 295 309 id, 296 type: 'OrderedCollection',310 type: ongeordend ? 'Collection' : 'OrderedCollection', 297 311 ...extra, 298 312 totalItems: telling, 299 313 first: url(1), 300 314 last: url(paginas), 301 orderedItems: lijst,315 ...(ongeordend ? { items: lijst } : { orderedItems: lijst }), 302 316 }; 303 317 } -
src/services/music/index.js
re1da6a1 r19a9a1e 253 253 return pagedCollection(id, items, { 254 254 page, 255 // Een platenkast is geen tijdlijn: `Collection`, niet `OrderedCollection`. 256 // Funkwhale's LibrarySerializer accepteert ook alleen die twee typen 257 // (as:Collection of fw:Library) en zijn CollectionPageSerializer alleen 258 // `CollectionPage` met `items`. 259 ongeordend: true, 255 260 extra: { 256 261 type: 'Library', 257 262 name: site.title || site.slug, 258 263 attributedTo: actorId(base, site.slug), 264 // WAAROM DIT VELD ER MOET STAAN. Funkwhale's LibrarySerializer noemt 265 // `audience` optioneel, maar zijn create() doet er meteen 266 // `privacy[validated_data["audience"]]` mee -- zonder de sleutel is dat 267 // een KeyError en geeft hun server een 500. Dat is wat open.audio op 15-8 268 // teruggaf toen Robin onze library-URI daar opzocht. 269 // 270 // Het is bovendien gewoon waar: alles hierin is fedi_open, dus openbaar. 271 // Bij hen is dit precies het verschil tussen privacy_level 'everyone' en 272 // 'me' -- oftewel of onze nummers daar afspeelbaar zijn. 273 audience: 'https://www.w3.org/ns/activitystreams#Public', 259 274 // Vereist volgens hun docs. Openbaar, dus de telling is eerlijk en de 260 275 // lijst blijft leeg -- wie ons volgt volgt de ACTOR, niet de bak.
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)