Changeset 8ed36de in Klonkt for src/services/music/index.js


Ignore:
Timestamp:
08/21/2026 04:57:20 PM (3 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
b0ccd0d
Parents:
4e5fe29
Message:

Een verwijderde track kondigt zichzelf aan, net als een post

Een post stuurt bij verwijderen een Delete(Tombstone) naar zijn volgers; een
track deed dat niet. De rij ging weg, het Audio-object gaf 404, en elke server
die hem had geindexeerd bleef ernaar wijzen. Op de hub stond het er vandaag als
een kaartje met een dode link, en het viel alleen op doordat robo het zag.

Sinds shaer-0nh is een track een eersterangs Audio-object met een eigen id, dus
hij hoort ook een eigen afmelding te krijgen.

  • deliverObjectDelete(site, objectId) is de gedeelde romp; deliverDelete en het nieuwe deliverTrackDelete leunen er allebei op. Het object-id komt van de aanroeper, want bij verwijderen is de rij vaak al weg.
  • trackUri() staat nu op EEN plek in music/index.js. Het formaat werd eerder alleen door de bouwkant gekend, en een tweede plek die het opnieuw in elkaar zet is precies hoe je een Delete stuurt die de ontvanger niet herkent.
  • Beide verwijderroutes in admin-audio melden af: de losse verwijdering en de opruiming van wezen. Een wees is voor ONS een track zonder bestand, maar de buitenwereld heeft een gewoon Audio-object opgeslagen.

Twee tests door de echte route. Een testhaak op deliver() bestaat niet, dus de
proef kijkt in ap_delivery: de volger krijgt een inbox op een dichte poort, de
directe poging faalt, en de activiteit hoort in de wachtrij te belanden. Die
tabel was in het echte geval leeg, dus dat is precies het bewijs. Controleproef
gedraaid: zonder de aankondiging valt de test om.

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/services/music/index.js

    r4e5fe29 r8ed36de  
    165165}
    166166
     167/**
     168 * De identiteit van een track op de draad.
     169 *
     170 * Staat apart omdat hij op TWEE momenten nodig is die ver uit elkaar liggen:
     171 * bij het bouwen van het Audio-object, en bij het verwijderen ervan, wanneer de
     172 * rij al weg is en er dus niets meer te bouwen valt. Toen dit nog inline stond,
     173 * kende alleen de bouwkant de vorm en ging er bij verwijderen geen Delete uit --
     174 * elke server die de track had geindexeerd hield hem voor altijd (21-8).
     175 */
     176export function trackUri(base, site, id) {
     177  return `${actorId(base, site.slug)}/tracks/${encodeURIComponent(id)}`;
     178}
     179
    167180export function buildTrackAudio(base, site, r, opts = {}) {
    168181  const abs = (u) => !u ? null : (/^https?:/i.test(u) ? u : `${base}${u.startsWith('/') ? '' : '/'}${u}`);
     
    187200  const a = {
    188201    ...(opts.standalone ? { '@context': AP_CONTEXT } : {}),
    189     id: `${actorId(base, site.slug)}/tracks/${encodeURIComponent(r.id)}`,
     202    id: trackUri(base, site, r.id),
    190203    type: 'Audio',
    191204    name: r.title || 'Audio',
Note: See TracChangeset for help on using the changeset viewer.