Changeset 8064da1 in Klonkt for src/routes/guardian.js


Ignore:
Timestamp:
08/10/2026 03:35:11 AM (4 weeks ago)
Author:
Bart <bart@…>
Branches:
main
Children:
f06ed56
Parents:
65c5ec6
Message:

De Guardian PWA kende maar één richting, en de knop wist het ook niet

/api/follow-requests bouwde zijn lijst uit listReviews() zonder richting, terwijl
ap_follow_reviews.direction er juist voor bestaat. Bij een uitgaand verzoek IS de
follower de ward, dus de kaart zette het kind zelf onder "Volgverzoeken" -- "je
kind wil je kind volgen" -- en degene om wie het ging viel weg.

Erger was de knop. Accept ging naar /api/follow/:id, dat in ap_pending_follows
zoekt en een uitgaand verzoek daar nooit vindt. Een guardian kon dus op Toestaan
drukken en denken dat het gebeurd was. Nu twee eindpunten, gekozen op richting.

En lokale wards ontbraken helemaal: alleen listForWard() van de INKOMENDE tabel
stond erin, dus wie zijn ward op dezelfde instance heeft zag uitgaande verzoeken
nergens. Die wachtten op iemand die er nooit naar keek.

Zelfde fout als in het paneel en in de melding: de richting is bekend en wordt op
het laatste moment weggegooid. Dit is de derde plek.

Co-Authored-By: Claude Opus 5 <claude@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/routes/guardian.js

    r65c5ec6 r8064da1  
    4242    // The per-ward panel: everything about one child in one place.
    4343    'settings_title', 'panel_open', 'panel_close', 'panel_help', 'panel_help_empty',
    44     'panel_follow', 'panel_follow_empty', 'panel_posts', 'panel_posts_empty',
     44    'panel_follow', 'panel_follow_empty', 'follow_out_line', 'panel_posts', 'panel_posts_empty',
    4545    'panel_actions', 'badge_help', 'badge_follow', 'badge_follow_one', 'help_empty',
    4646    // Releasing a ward: a deliberate two-step answer, never one click.
     
    289289  for (const w of wardSlugsOf(site)) {
    290290    for (const f of Guardianship.follows.listForWard(w.slug)) {
    291       items.push({ id: f.id, ward: `@${w.slug}@${host}`, wardUri: w.uri, follower: f.follower_handle || f.follower_name || f.follower_uri, followerIcon: f.follower_icon, remote: false, created: f.created_at });
     291      items.push({ id: f.id, direction: 'incoming', ward: `@${w.slug}@${host}`, wardUri: w.uri, follower: f.follower_handle || f.follower_name || f.follower_uri, followerIcon: f.follower_icon, remote: false, created: f.created_at });
     292    }
     293    // §5.3 andersom (shaer-p729): wat dit kind zelf heeft gevraagd. Stond hier
     294    // niet, dus een guardian met een LOKALE ward zag uitgaande verzoeken in de
     295    // PWA helemaal niet -- ze wachtten op iemand die er nooit naar keek.
     296    for (const o of Guardianship.outgoing.listForWard(w.slug)) {
     297      items.push({ id: o.id, direction: 'outgoing', ward: `@${w.slug}@${host}`, wardUri: w.uri, target: o.target_handle || o.target_uri, remote: false, created: o.created_at });
    292298    }
    293299  }
     
    295301  for (const rev of Guardianship.follows.listReviews(site.slug)) {
    296302    const wardName = (() => { try { const u = new URL(rev.ward_uri); return `@${u.pathname.split('/').pop()}@${u.host}`; } catch { return rev.ward_uri; } })();
    297     items.push({ id: rev.id, ward: wardName, wardUri: rev.ward_uri, follower: rev.follower_handle || rev.follower_uri, followerIcon: rev.follower_icon, remote: true, created: rev.created_at });
     303    // De richting stond in de tabel en werd hier weggelaten. Zonder haar leest
     304    // een uitgaand verzoek als een inkomend: de follower IS dan de ward, dus de
     305    // kaart zei "je kind wil je kind volgen" en het doel viel weg.
     306    const uitgaand = rev.direction === 'outgoing';
     307    items.push({
     308      id: rev.id, direction: uitgaand ? 'outgoing' : 'incoming',
     309      ward: wardName, wardUri: rev.ward_uri,
     310      follower: uitgaand ? undefined : (rev.follower_handle || rev.follower_uri),
     311      target: uitgaand ? (rev.target_handle || rev.target_uri) : undefined,
     312      followerIcon: uitgaand ? undefined : rev.follower_icon,
     313      remote: true, created: rev.created_at,
     314    });
    298315  }
    299316  res.json({ items });
Note: See TracChangeset for help on using the changeset viewer.