Changes in src/services/ActivityPubService.js [5e16b8a:dc802b4] in Klonkt
- File:
-
- 1 edited
-
src/services/ActivityPubService.js (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/services/ActivityPubService.js
r5e16b8a rdc802b4 34 34 // De muziekkant woont in music/ (shaer-drc). Doorgeven wat hier altijd 35 35 // vandaan kwam, zodat elke bestaande aanroep blijft werken. 36 import { luisteraars } from './music/index.js';37 36 import { TRACK_KOLOMMEN, 38 37 playlistOpenTracks, siteOpenTracks, openTrack, trackHostPosts, … … 40 39 buildPlaylistCollection, listPlaylistsAP, playlistLinkTags, 41 40 buildPostTrackCollection, uitgavePost, 42 buildLibrary, libraryId,43 41 licentieUri, channelCategory, 44 42 } from './music/index.js'; … … 48 46 buildPlaylistCollection, listPlaylistsAP, playlistLinkTags, licentieUri, 49 47 buildPostTrackCollection, uitgavePost, 50 buildLibrary, libraryId,51 48 }; 52 49 … … 357 354 const pagina = pickLink(o.url, () => true); 358 355 return { html: HtmlSanitizerService.sanitize(o.content || ''), atts, url: pagina ? pagina.href : null }; 359 }360 361 /**362 * De site achter een library-uri, of null. Zelfde strengheid als localSlugOf:363 * de uri moet met ONZE basis beginnen en de site moet bestaan -- anders levert364 * andermans /library met dezelfde padstaart hier een volger op onze naam op.365 */366 function libraryOwnerSlug(uri) {367 const u = String(uri || '');368 if (!u.endsWith('/library')) return null;369 return localSlugOf(u.slice(0, -'/library'.length));370 356 } 371 357 … … 1200 1186 // these as the "Featured" tab (pinned to the profile). Posts come ordered by pin 1201 1187 // rank; embedded as full Notes so a remote server doesn't need extra fetches. 1202 export function buildFeatured(base, site, posts , { page = false } = {}) {1188 export function buildFeatured(base, site, posts) { 1203 1189 const id = `${actorId(base, site.slug)}/featured`; 1204 1190 const items = (posts || []).map((p) => buildNote(base, site, p)); 1205 return pagedCollection(id, items , { page });1191 return pagedCollection(id, items); 1206 1192 } 1207 1193 … … 2368 2354 if (type === 'Follow') { 2369 2355 const who = typeof act.actor === 'string' ? act.actor : (act.actor && act.actor.id); 2370 // EERST: volgt iemand onze BIBLIOTHEEK in plaats van onze actor? (shaer-0nh)2371 //2372 // Een luisteraar krijgt de muziek en NIET de gewone posts -- wie zich2373 // abonneert op een platenkast heeft niet om de Krant gevraagd. Vandaar een2374 // eigen tabel: zolang ze daar staan kan een postbezorging ze niet per2375 // ongeluk meenemen.2376 //2377 // De bibliotheek is openbaar (alles erin is fedi_open), dus dit accepteert2378 // meteen. Er valt niets goed te keuren, en dan is wachten oneerlijk.2379 const libSlug = libraryOwnerSlug(typeof act.object === 'string' ? act.object : (act.object && act.object.id));2380 if (who && libSlug) {2381 const remote = await fetchActor(who);2382 if (!remote || !remote.inbox) return 202;2383 const fi = actorInfo(remote, who);2384 luisteraars.voegToe(libSlug, {2385 actorUri: who, inbox: remote.inbox,2386 sharedInbox: (remote.endpoints && remote.endpoints.sharedInbox) || null,2387 name: fi.name, handle: fi.handle, icon: fi.icon,2388 });2389 const keys = getOrCreateKeys(libSlug);2390 const accept = {2391 '@context': AP_CONTEXT,2392 id: `${actorId(base, libSlug)}#accept-library-${Date.now()}-${rid()}`,2393 type: 'Accept', actor: actorId(base, libSlug), object: act,2394 };2395 deliver(remote.inbox, accept, `${actorId(base, libSlug)}#main-key`, keys.privatePem)2396 .catch(() => { /* de volger staat er; een mislukte Accept mag dat niet omgooien */ });2397 console.log('[AP] library follow from', who, '->', libSlug);2398 return 202;2399 }2400 2356 // slugParam is de eigenaar van een per-actor inbox; op de GEDEELDE inbox is 2401 2357 // die er niet en werd de slug uit act.object geraden. Zonder hostcontrole … … 2481 2437 return 202; 2482 2438 } 2483 // Een luisteraar die weggaat, hoort meteen weg te zijn.2484 if (type === 'Undo' && act.object && act.object.type === 'Follow') {2485 const doel = typeof act.object.object === 'string' ? act.object.object : (act.object.object && act.object.object.id);2486 const libSlug = libraryOwnerSlug(doel);2487 const wie = typeof act.actor === 'string' ? act.actor : (act.actor && act.actor.id);2488 if (libSlug && wie && luisteraars.verwijder(libSlug, wie)) {2489 console.log('[AP] library unfollow from', wie, '->', libSlug);2490 return 202;2491 }2492 }2493 2494 2439 if (type === 'Undo' && act.object) { 2495 2440 const who = typeof act.actor === 'string' ? act.actor : (act.actor && act.actor.id); … … 6864 6809 buildPlaylistCollection, playlistOpenTracks, listPlaylistsAP, playlistLinkTags, 6865 6810 buildPostTrackCollection, uitgavePost, 6866 buildLibrary, libraryId,6867 6811 followerCount, deliver, fetchActor, verifyRequest, handleInbox, deliverCreate, deliverDelete, deliverUpdate, deliverActorUpdate, resyncFeaturedPins, 6868 6812 feedCursor, feedChangesSince, waitForFeedChange,
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)