Changeset 1976a10 in Klonkt for src


Ignore:
Timestamp:
08/24/2026 04:57:45 PM (2 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
3e7dde2
Parents:
db81e56
Message:

Opsplitsing stap 10 (shaer-drc): de Cirkel naar ap-cirkel.js

De feed van uitgelichte accounts plus zelf gebooste posts en de twee
lijstjes eromheen -- 28 regels, byte-voor-byte. De enige snede tot nu
toe zonder ook maar een werktuig uit de dienstlaag: alleen db.

Uitvoeroppervlak voor en na identiek gemeten (199 named exports, 180
sleutels op het default-object). Volle suite 1226 groen.
ActivityPubService staat nu op 4346 regels.

Location:
src/services
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • src/services/ActivityPubService.js

    rdb81e56 r1976a10  
    112112};
    113113// Stap 9 (shaer-drc): de inbox woont in ap-inbox.js. De schakelkast krijgt
    114 // onderaan zijn tweeendertig werktuigen via wireInbox.
     114// onderaan zijn vierendertig werktuigen via wireInbox.
    115115import { handleInbox, wireInbox } from './ap-inbox.js';
    116116export { handleInbox };
     117// Stap 10 (shaer-drc): de Cirkel woont in ap-cirkel.js. Geen wire: hij leest
     118// alleen db.
     119import { autoBoostCount, getCirkelPosts, getCirkelMembers } from './ap-cirkel.js';
     120export { autoBoostCount, getCirkelPosts, getCirkelMembers };
    117121// Doorgeven wat hier altijd vandaan kwam, zodat elke bestaande aanroep blijft werken.
    118122export { AP_CONTEXT, actorId, noteId, guessMediaType };
     
    28182822function emojiJsonOf(map) { return (map && Object.keys(map).length) ? JSON.stringify(map) : null; }
    28192823
    2820 // ── Cirkel = posts from the accounts you auto-boost ("feature an artist") ──
    2821 let _abCount, _cirkelPosts, _cirkelMembers;
    2822 export function autoBoostCount(slug) {
    2823   try { if (!_abCount) _abCount = db.prepare('SELECT COUNT(*) AS n FROM ap_following WHERE slug = ? AND auto_boost = 1'); return _abCount.get(slug).n; } catch { return 0; }
    2824 }
    2825 export function getCirkelPosts(slug, limit, offset) {
    2826   try {
    2827     // Cirkel = posts from featured (auto_boost) accounts + posts you boosted
    2828     // (t.boosted), mixed by date. One row per note in ap_timeline → no duplicates.
    2829     if (!_cirkelPosts) _cirkelPosts = db.prepare(`
    2830       SELECT t.id, t.author_uri, t.author_name, t.author_handle, t.author_icon, t.author_url,
    2831              t.content, t.url, t.published, t.media_json, t.nsfw, t.cw,
    2832              (rb.target_uri IS NOT NULL) AS boosted
    2833       FROM ap_timeline t
    2834       LEFT JOIN ap_following f ON f.slug = t.slug AND f.actor_uri = t.author_uri
    2835       -- Uit de tussentabel, niet uit t.boosted: die kolom is een afgeleide. De
    2836       -- UNIQUE(site_slug, target_uri, kind) garandeert hoogstens één match, dus
    2837       -- deze join kan geen rijen verdubbelen.
    2838       LEFT JOIN ap_my_reactions rb ON rb.site_slug = t.slug AND rb.target_uri = t.id AND rb.kind = 'boost'
    2839       WHERE t.slug = ? AND (f.auto_boost = 1 OR rb.target_uri IS NOT NULL)
    2840       ORDER BY COALESCE(t.published, t.created_at) DESC, t.rowid DESC
    2841       LIMIT ? OFFSET ?`);
    2842     return _cirkelPosts.all(slug, limit || 60, offset || 0);
    2843   } catch { return []; }
    2844 }
    2845 export function getCirkelMembers(slug) {
    2846   try { if (!_cirkelMembers) _cirkelMembers = db.prepare('SELECT name, url, icon FROM ap_following WHERE slug = ? AND auto_boost = 1 ORDER BY name'); return _cirkelMembers.all(slug); } catch { return []; }
    2847 }
    28482824
    28492825
Note: See TracChangeset for help on using the changeset viewer.