Changes in src/services/ActivityPubService.js [e5fc801:d14bf1c] in Klonkt
- File:
-
- 1 edited
-
src/services/ActivityPubService.js (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/services/ActivityPubService.js
re5fc801 rd14bf1c 3502 3502 */ 3503 3503 export function feedCursor(slug) { 3504 const max = (sql, ...args) => { try { const r = db.prepare(sql).get(...args); return (r && r.n) || 0; } catch { return 0; } }; 3505 const t = max('SELECT MAX(rowid) AS n FROM ap_timeline WHERE slug = ?', slug); 3506 const m = max('SELECT MAX(rowid) AS n FROM ap_mentions WHERE slug = ?', slug); 3507 const o = max('SELECT MAX(rowid) AS n FROM ap_outbox WHERE site_slug = ?', slug); 3508 const r = max(`SELECT MAX(i.rowid) AS n FROM ap_interactions i 3509 JOIN posts p ON p.id = i.post_id 3510 JOIN sites s ON s.id = p.site_id 3511 WHERE s.slug = ? AND i.kind = 'reply'`, slug); 3512 return `${t}.${m}.${o}.${r}`; 3504 try { 3505 const r = db.prepare('SELECT MAX(rev) AS n FROM ap_feed_state WHERE slug = ?').get(slug); 3506 return String((r && r.n) || 0); 3507 } catch { return '0'; } 3508 } 3509 3510 /** 3511 * Wat er sinds `rev` met deze tijdlijn gebeurd is: welke berichten er nieuw zijn, 3512 * bewerkt, of weg. 3513 * 3514 * Nog niet gebruikt door een leespad -- de vorm van de aankomst is shaer-of7 en 3515 * de "bewerkt"-markering is daar nog een open beslissing. Maar de gegevens 3516 * ontstaan hoe dan ook bij het bijhouden van de merksteen, en dit is de enige 3517 * plek waar ze samen te lezen zijn. 3518 */ 3519 export function feedChangesSince(slug, rev, limit = 200) { 3520 try { 3521 return db.prepare(`SELECT object_uri, kind, rev FROM ap_feed_state 3522 WHERE slug = ? AND rev > ? ORDER BY rev ASC LIMIT ?`) 3523 .all(slug, parseInt(rev, 10) || 0, limit); 3524 } catch { return []; } 3513 3525 } 3514 3526 … … 5278 5290 // Guardian PWA / Berichten push. The kid answers an incoming offer in its 5279 5291 // own Berichten; an existing guardian and a commit land in the PWA. 5280 //5281 // De labels hangen aan dezelfde sleutels als het Guardian-paneel, zodat een5282 // melding en het scherm waar hij heen wijst hetzelfde woord gebruiken.5283 5292 onEvent: (slug, ev) => { 5284 const p = guardianEventPush(slug, ev); 5285 if (p) pushEvent(slug, p); 5293 const L = pushLang(slug); 5294 const texts = { 5295 offer_received: ['push.n_guard_offer_t', 'push.n_guard_offer_b'], // I am the ward 5296 offer_for_ward: ['push.n_guard_cog_t', 'push.n_guard_cog_b'], // I co-guard this ward 5297 committed: ['push.n_guard_ward_t', 'push.n_guard_ward_b'], 5298 // §3.2: a guardian ended the relation. The ward hears that someone who 5299 // was looking after them has gone; a co-guardian hears they are one fewer. 5300 guardian_left: ['push.n_guard_left_t', 'push.n_guard_left_b'], 5301 coguardian_left: ['push.n_guard_cogleft_t', 'push.n_guard_cogleft_b'], 5302 }[ev.kind]; 5303 if (!texts) return; 5304 const who = deriveHandle(ev.candidate || ev.guardian || ev.ward || '') || '?'; 5305 const url = (ev.kind === 'offer_received' || ev.kind === 'guardian_left') ? `${pushPrefix(slug)}/messages` : '/guardian'; 5306 pushEvent(slug, { type: 'guardian', title: i18nT(L, texts[0]), body: i18nT(L, texts[1], { who }), url }); 5286 5307 }, 5287 5308 }); 5288 5289 /**5290 * Welke melding hoort bij een guardianship-gebeurtenis, of geen.5291 *5292 * Apart en puur, omdat dit een BESLISSING is en geen bezorging: de5293 * guardianship-module zendt veertien soorten uit en deze tabel bepaalt welke5294 * daarvan een mens wakker maken. Dat hoort toetsbaar te zijn zonder web-push5295 * erbij te halen.5296 */5297 export function guardianEventPush(slug, ev) {5298 const L = pushLang(slug);5299 const texts = {5300 offer_received: ['push.n_guard_offer_t', 'push.n_guard_offer_b'], // I am the ward5301 offer_for_ward: ['push.n_guard_cog_t', 'push.n_guard_cog_b'], // I co-guard this ward5302 committed: ['push.n_guard_ward_t', 'push.n_guard_ward_b'],5303 // §3.2: a guardian ended the relation. The ward hears that someone who5304 // was looking after them has gone; a co-guardian hears they are one fewer.5305 guardian_left: ['push.n_guard_left_t', 'push.n_guard_left_b'],5306 coguardian_left: ['push.n_guard_cogleft_t', 'push.n_guard_cogleft_b'],5307 // 5.6 gated settings. Zonder deze twee is de hele tally stil: een guardian5308 // hoort niet dat er een antwoord van hem gewenst is, en dus loopt het5309 // venster leeg en verloopt het voorstel. Een drempel die niemand ziet is5310 // geen drempel.5311 gated_review: ['push.n_gate_ask_t', 'push.n_gate_ask_b'], // jij moet antwoorden5312 gated_outcome: ['push.n_gate_done_t', 'push.n_gate_done_b'], // er is besloten5313 }[ev.kind];5314 if (!texts) return null;5315 const who = deriveHandle(ev.candidate || ev.guardian || ev.ward || '') || '?';5316 // Een gate-melding zonder te zeggen WELKE instelling is nutteloos: er zijn er5317 // meer dan een, en ze betekenen heel verschillende dingen voor een kind.5318 const wat = i18nT(L, GATE_LABEL[ev.feature] || 'guardian.prop_embeds');5319 const stand = i18nT(L, ev.value ? 'guardian.prop_on' : 'guardian.prop_off');5320 const uitkomst = i18nT(L, GATE_OUTCOME[ev.outcome] || 'guardian.prop_st_open');5321 const url = (ev.kind === 'offer_received' || ev.kind === 'guardian_left') ? `${pushPrefix(slug)}/messages` : '/guardian';5322 return { type: 'guardian', title: i18nT(L, texts[0]), body: i18nT(L, texts[1], { who, wat, stand, uitkomst }), url };5323 }5324 5325 // Van een gated feature naar het woord dat het Guardian-paneel er al voor5326 // gebruikt. Een onbekende feature valt terug op het algemene woord in plaats van5327 // de melding te laten vervallen: liever een iets vager bericht dan geen bericht.5328 const GATE_LABEL = {5329 'shaer:externalEmbeds': 'guardian.prop_embeds',5330 'shaer:externalPlayback': 'guardian.prop_play',5331 };5332 const GATE_OUTCOME = {5333 accepted: 'guardian.prop_st_accepted',5334 rejected: 'guardian.prop_st_rejected',5335 expired: 'guardian.prop_st_expired',5336 };5337 5309 5338 5310 // The notification duty of FEP-633c 3.6.2, wired once for every place a … … 5364 5336 buildActor, buildNote, buildCreate, buildOutbox, buildFollowers, buildFollowing, buildFeatured, 5365 5337 followerCount, deliver, fetchActor, verifyRequest, handleInbox, deliverCreate, deliverDelete, deliverUpdate, deliverActorUpdate, resyncFeaturedPins, 5366 feedCursor, waitForFeedChange,5338 feedCursor, feedChangesSince, waitForFeedChange, 5367 5339 getInteractions, getInteractionById, setInteractionBoosted, setInteractionLiked, buildReplyNote, getOutboxNote, getSentNotes, deliverReply, resolveRemoteNote, noteAudience, mayReadNote, 5368 5340 listOutbox, deliverOutboxDelete, deliverOutboxUpdate, deliverDirectNote,
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)