Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/services/guardianship/queues.js

    r1e172f3 rfa33214  
    66 *  - offers:  pending handshake offers where I am a party (§3), with the full
    77 *             accept tally so the client shows the right action
    8  *  - follows: pending gated follows ON my wards (§5.3), Fase 2 (shaer-jdb)
     8 *  - follows: pending gated follows for my wards (§5.3) — Fase 2, empty for now
    99 *  - wards:   my committed wards
    1010 */
     
    1313import * as availability from './availability.js';
    1414import * as outgoing from './outgoing.js';
    15 import * as follows from './follows.js';
    1615import * as handshake from './handshake.js';
    1716
     
    3635}
    3736
    38 /**
    39  * Gate-verzoeken OP mijn wards die op mijn antwoord wachten (Guardianship Fase 2,
    40  * shaer-jdb). Dit was een lege stub: de gating zelf werkt sinds shaer-hxg, maar
    41  * werd nooit aan een C2S-client doorgegeven omdat de koers toen op de PWA lag.
    42  *
    43  * Twee bronnen, want een guardian kan wards op andere servers hebben en (nog)
    44  * op deze:
    45  *   - ap_follow_reviews: de doorgestuurde kopie van een REMOTE ward
    46  *   - ap_pending_follows: een ward op deze instance
    47  * Zie shaer-h6u: die tweede hoort op termijn ook over de lijn te gaan.
    48  */
    49 export function followsCollection(id, slug, me) {
    50   const items = follows.listReviewsByDirection(slug, 'incoming')
    51     .map((r) => follows.reviewQueueItem(r, me));
    52   for (const w of relations.listWards(slug)) {
    53     const wardSlug = slugOf(w.other_uri);
    54     if (!wardSlug) continue;
    55     for (const p of follows.listForWard(wardSlug)) {
    56       items.push({
    57         id: p.id, type: 'Follow', actor: p.follower_uri, object: w.other_uri,
    58         'shaer:direction': 'incoming', 'shaer:ward': w.other_uri,
    59         'shaer:follower': p.follower_uri, 'shaer:followerHandle': p.follower_handle || undefined,
    60         'shaer:quorum': p.quorum || 'any', published: p.created_at,
    61       });
    62     }
    63   }
    64   return collection(id, items);
     37/** Gated follows awaiting guardian approval — not built in Klonkt yet (Fase 2). */
     38export function followsCollection(id) {
     39  return collection(id, []);
    6540}
    6641
    67 /** De slug van een actor-uri op DEZE instance, of null als hij elders woont. */
    68 function slugOf(uri) {
    69   const base = (process.env.PUBLIC_BASE_URL || '').replace(/\/+$/, '');
    70   if (!base || !String(uri || '').startsWith(`${base}/ap/users/`)) return null;
    71   return decodeURIComponent(String(uri).slice(`${base}/ap/users/`.length).split(/[/?#]/)[0]) || null;
    72 }
    73 
    74 /**
    75  * §5.3 uitgaand. Twee lezers, een wachtrij, en dat kan omdat §1 een ward en een
    76  * guardian wederzijds uitsluit: je bent het een of het ander.
    77  *
    78  *   ALS WARD      wat IK wil volgen en waar mijn guardians nog over moeten
    79  *   ALS GUARDIAN  wat mijn WARDS willen volgen en waar IK over moet (shaer-jdb)
    80  *
    81  * Dat tweede ontbrak. De wachtrij serveerde alleen listForWard(slug), en voor
    82  * een guardian is dat per definitie leeg -- dus het scherm "Your wards want to
    83  * follow" kon nooit iets tonen.
    84  */
     42/** §5.3 outbound: this ward's own follow requests, waiting for its guardians. */
    8543export function outgoingFollowsCollection(id, slug, me) {
    86   const items = outgoing.listForWard(slug).map((o) => outgoing.queueItem(o, me));
    87   for (const r of follows.listReviewsByDirection(slug, 'outgoing')) {
    88     items.push(follows.reviewQueueItem(r, me));
    89   }
    90   return collection(id, items);
     44  return collection(id, outgoing.listForWard(slug).map((o) => outgoing.queueItem(o, me)));
    9145}
    9246
Note: See TracChangeset for help on using the changeset viewer.