Changeset e311202 in Klonkt for src/services/BlocklistService.js
- Timestamp:
- 08/21/2026 08:44:47 AM (3 weeks ago)
- Branches:
- main
- Children:
- 4e5fe29
- Parents:
- bb9e54c
- File:
-
- 1 edited
-
src/services/BlocklistService.js (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/services/BlocklistService.js
rbb9e54c re311202 56 56 // `resolveHandle` (async handle → actor URL) is injected by the caller so this 57 57 // service needs nothing from ActivityPubService (no circular import). 58 export async function blockTarget(site, input, resolveHandle) { 58 /** 59 * Een blokkade is pas een blokkade als de ander het merkt (Robin, 21-8). 60 * 61 * Tot vandaag bleef hij binnenshuis: rij in ap_blocks, inhoud opruimen, volger 62 * eruit -- en verder niets. De andere kant volgde je dan nog steeds in zijn 63 * eigen boeken en bleef je publieke outbox lezen. Precies wat de hub deed: 64 * kanaal en berichten stonden er gewoon nog. Vandaar dat we het nu ook 65 * VERSTUREN, zoals Mastodon dat doet: een Block naar de inbox van wie je 66 * blokkeert, en bij opheffen een Undo(Block) zodat de weg terug openligt. 67 * 68 * Alleen voor een actor-blokkade: een heel domein heeft geen inbox om aan te 69 * schrijven. En bezorgen mag nooit de blokkade zelf tegenhouden -- die staat 70 * al vast in de database voordat we ook maar iets proberen te versturen. 71 */ 72 async function meldBlokkade(site, target, kind, bezorg, undo = false) { 73 if (kind !== 'actor' || typeof bezorg !== 'function') return; 74 try { await bezorg(site, target, undo); } catch { /* de blokkade staat, de melding is een gunst */ } 75 } 76 77 export async function blockTarget(site, input, resolveHandle, bezorg) { 59 78 const raw = String(input || '').trim(); 60 79 if (!site || !site.slug || !raw) return { error: 'empty' }; … … 69 88 purgeBlocked(kind, target); 70 89 console.log('[AP] block', site.slug, kind, target); 90 await meldBlokkade(site, target, kind, bezorg); 71 91 return { ok: true, label }; 72 92 } 73 93 74 export function unblock(site, target) { blStmts().del.run(site.slug, target); return { ok: true }; } 94 export async function unblock(site, target, bezorg) { 95 const rij = blStmts().list.all(site.slug).find((b) => b.target === target); 96 blStmts().del.run(site.slug, target); 97 // Undo(Block) zodat de ander weet dat de deur weer open is; zonder dit blijft 98 // hij bij zichzelf geblokkeerd staan en komt hij nooit terug. 99 await meldBlokkade(site, target, (rij && rij.kind) || 'actor', bezorg, true); 100 return { ok: true }; 101 } 75 102 76 103 export default { listBlocks, isBlockedAny, blockTarget, unblock };
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)