Changeset f06ed56 in Klonkt for src/services/ActivityPubService.js
- Timestamp:
- 08/10/2026 03:42:31 AM (4 weeks ago)
- Branches:
- main
- Children:
- 7e53594
- Parents:
- 8064da1
- File:
-
- 1 edited
-
src/services/ActivityPubService.js (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/services/ActivityPubService.js
r8064da1 rf06ed56 6048 6048 * was hij onbereikbaar, en een mutatie die het wekken weghaalde bleef groen. 6049 6049 */ 6050 /** 6051 * Hoeveel er van bewaard blijft. Een logboek dat oneindig groeit is een 6052 * logboek dat niemand meer opent, en dit is geschiedenis, geen archief: wat 6053 * ertoe doet staat vooraan. 6054 */ 6055 export const GUARDIAN_EVENT_KEEP = 200; 6056 6057 /** 6058 * Leg de gebeurtenis vast VOOR de melding. 6059 * 6060 * De meldingstabel beslist wie er wakker van wordt, en dat is terecht een korte 6061 * lijst -- maar hij besliste daarmee ook wat er onthouden werd, en dat was niet 6062 * de bedoeling. Elf van de achttien soorten verdwenen spoorloos, met hun inhoud: 6063 * een geweigerd aanbod droeg de REDEN mee tot hier en niet verder, terwijl §4.2 6064 * eist dat de ward en zijn guardians die te horen krijgen. 6065 * 6066 * Vastleggen en melden zijn nu twee dingen. Alles komt in het logboek; alleen 6067 * wat een mens moet wekken gaat ook als push de deur uit. 6068 */ 6069 export function recordGuardianEvent(slug, ev) { 6070 if (!slug || !ev || !ev.kind) return; 6071 try { 6072 db.prepare('INSERT INTO ap_guardian_events (slug, kind, payload, created_at) VALUES (?,?,?,CURRENT_TIMESTAMP)') 6073 .run(slug, String(ev.kind), JSON.stringify(ev)); 6074 db.prepare(`DELETE FROM ap_guardian_events WHERE slug = ? AND id NOT IN 6075 (SELECT id FROM ap_guardian_events WHERE slug = ? ORDER BY id DESC LIMIT ?)`) 6076 .run(slug, slug, GUARDIAN_EVENT_KEEP); 6077 } catch { /* een logboek mag nooit de gebeurtenis zelf breken */ } 6078 } 6079 6080 /** De laatste gebeurtenissen voor dit account, nieuwste eerst. */ 6081 export function listGuardianEvents(slug, limit = 50) { 6082 try { 6083 return db.prepare('SELECT id, kind, payload, created_at FROM ap_guardian_events WHERE slug = ? ORDER BY id DESC LIMIT ?') 6084 .all(slug, Math.max(1, Math.min(Number(limit) || 50, GUARDIAN_EVENT_KEEP))) 6085 .map((r) => ({ id: r.id, kind: r.kind, created: r.created_at, ...safeJson(r.payload) })); 6086 } catch { return []; } 6087 } 6088 6089 function safeJson(s) { try { return JSON.parse(s) || {}; } catch { return {}; } } 6090 6050 6091 export function onGuardianshipEvent(slug, ev) { 6092 recordGuardianEvent(slug, ev); 6051 6093 wakeGuardian(slug); 6052 6094 const p = guardianEventPush(slug, ev); … … 6141 6183 webfingerResolve, followActor, resolveRemoteActor, unfollowActor, handleMoveInbox, moveAccount, listFollowing, setAutoBoost, backfillFromOutbox, getTimeline, getDirectMessages, isoStamp, timelineAttachments, timelineEmojis, timelineObjectLinks, timelineQuote, timelineEmbed, applyQuoteProps, deliverToActor, sendInteraction, voteOnPoll, voteOnRemotePoll, 6142 6184 acceptGatedFollow, rejectGatedFollow, isWardGuardian, outboxAudience, sendFollowDecision, 6143 gateOutgoingFollow, performApprovedFollow, 6185 gateOutgoingFollow, performApprovedFollow, recordGuardianEvent, listGuardianEvents, GUARDIAN_EVENT_KEEP, 6144 6186 parseOwnPoll, pollTally, ownPollView, deliverPollUpdate, maybeCrawlThread, sendReport, localMentionSlugs, previewCard, 6145 6187 autoBoostCount, boostedCount, setReaction, getReaction, getReactionsFor, canonicalReactionUri, migrateReactions, upsertBoostedNote, getCirkelPosts, getCirkelMembers, selfHealTimeline,
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)