Changeset 709dc6f in Klonkt for src/services
- Timestamp:
- 08/09/2026 04:59:31 PM (4 weeks ago)
- Branches:
- main
- Children:
- 89d3c06
- Parents:
- e62eee4
- Location:
- src/services
- Files:
-
- 3 edited
-
ActivityPubService.js (modified) (1 diff)
-
guardianship/gated.js (modified) (2 diffs)
-
guardianship/queues.js (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/services/ActivityPubService.js
re62eee4 r709dc6f 5476 5476 const guardians = Guardianship.listGuardians(slug).map((g) => g.other_uri); 5477 5477 if (!guardians.length) return null; // not a ward: nothing to gate 5478 // shaer:following (shaer-p729) — its own gate, apart from shaer:follows, 5479 // which governs the OTHER direction. §5.3 fixes the inbound one on: a Follow 5480 // aimed at a ward MUST pass the guardians. About this direction the FEP says 5481 // nothing, so it is ours to set and ours to let go of, and the guardians can 5482 // relax it for a child who has grown into it. Undecided means gated for a 5483 // ward, the same automatiek as the rest of the family. 5484 const gateRow = db.prepare('SELECT gate_following FROM sites WHERE slug = ?').get(slug); 5485 if (Guardianship.wardGateAllowed(gateRow && gateRow.gate_following, true)) return null; 5478 5486 if (guardians.includes(targetUri)) return null; // your own guardian 5479 5487 if (Guardianship.outgoing.isMutual(slug, targetUri)) return null; // already vetted by name -
src/services/guardianship/gated.js
re62eee4 r709dc6f 68 68 'shaer:customEmoji': 'gate_custom_emoji', 69 69 'shaer:accountMove': 'gate_account_move', 70 'shaer:following': 'gate_following', 70 71 }; 71 72 /** … … 112 113 { feature: 'shaer:customEmoji', kind: 'setting', reversible: true, bead: 'shaer-ytw' }, 113 114 { feature: 'shaer:accountMove', kind: 'setting', reversible: true, bead: 'shaer-tge' }, 114 // Altijd aan voor een ward (5.3): niet te verzetten, wel te tonen. Een paneel 115 // dat alleen verstelbare dingen laat zien verzwijgt de helft van wat er geldt. 115 // Wie de ward mag VOLGEN, en wie de ward mag volgen: twee poorten, want twee 116 // vragen. Ze stonden hier als één rij, en dan telt het paneel de ene richting 117 // en zwijgt over de andere -- een guardian ziet "follows: 3 wachtend" en weet 118 // niet of er drie vreemden bij zijn kind willen of dat zijn kind drie keer 119 // heeft gevraagd of het iemand mag volgen. Dat zijn niet dezelfde zorg. 120 // 121 // Inkomend is vast: §5.3 EIST dat een Follow naar een ward langs de guardians 122 // gaat, dus die staat aan en blijft aanstaan. Tonen mag, verzetten niet. 116 123 { feature: 'shaer:follows', kind: 'perRequest', reversible: true, fixed: true }, 124 // Uitgaand is verstelbaar, en dat verschil is opzet. De FEP zegt over deze 125 // richting niets: §5.3 gaat alleen over een Follow die op een ward AF komt. 126 // Wat je verder gated is expliciet aan de implementatie gelaten, dus dit is 127 // onze keuze en niet die van de spec -- en dan hoort hij ook echt te kunnen 128 // worden losgelaten, want een kind dat ouder wordt hoort niet eeuwig te 129 // blijven vragen wie het mag volgen (shaer-p729, shaer-yeo5). 130 { feature: 'shaer:following', kind: 'perRequest', reversible: true, bead: 'shaer-p729' }, 117 131 118 132 // GEPLAND, en dat is bij deze twee geen achterstand maar een besluit. -
src/services/guardianship/queues.js
re62eee4 r709dc6f 158 158 export function wardGates(mySlug, wardUri) { 159 159 const statuses = wardGuardianStatuses(wardUri); 160 const wachtend = follows.listReviewsByDirection(mySlug, 'incoming') 160 // Per richting geteld, want het zijn twee zorgen. "follows: 3 wachtend" liet 161 // een guardian niet zien of er drie vreemden bij zijn kind willen of dat zijn 162 // kind drie keer heeft gevraagd of het iemand mag volgen (shaer-p729). 163 const wachtendIn = follows.listReviewsByDirection(mySlug, 'incoming') 164 .filter((r) => r.ward_uri === wardUri).length; 165 const wachtendUit = follows.listReviewsByDirection(mySlug, 'outgoing') 161 166 .filter((r) => r.ward_uri === wardUri).length; 162 167 return gated.gateRows({ … … 172 177 feature: p.feature, value: !!p.value, status: gated.sentStatus(p, Date.now()), 173 178 })), 174 waiting: { 'shaer:follows': wachtend || undefined }, 179 waiting: { 180 'shaer:follows': wachtendIn || undefined, 181 'shaer:following': wachtendUit || undefined, 182 }, 175 183 // De vraag van het kind zelf staat APART van wat er in een wachtrij staat 176 184 // (shaer-8ru). Allebei "n waiting" noemen maakt van twee verschillende
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)