Changes in src/services/guardianship/follows.js [1e172f3:2b4252c] in Klonkt
- File:
-
- 1 edited
-
src/services/guardianship/follows.js (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/services/guardianship/follows.js
r1e172f3 r2b4252c 81 81 _r = { 82 82 ins: db.prepare(`INSERT OR IGNORE INTO ap_follow_reviews 83 (id, guardian_slug, ward_uri, ward_inbox, follower_uri, follower_handle, follower_icon, follow_json, 84 direction, target_uri, target_handle, created_at) 85 VALUES (?,?,?,?,?,?,?,?,?,?,?, CURRENT_TIMESTAMP)`), 83 (id, guardian_slug, ward_uri, ward_inbox, follower_uri, follower_handle, follower_icon, follow_json, created_at) 84 VALUES (?,?,?,?,?,?,?,?, CURRENT_TIMESTAMP)`), 86 85 get: db.prepare('SELECT * FROM ap_follow_reviews WHERE guardian_slug = ? AND id = ?'), 87 86 bySlug: db.prepare("SELECT * FROM ap_follow_reviews WHERE guardian_slug = ? AND status = 'pending' ORDER BY created_at DESC"), … … 92 91 } 93 92 94 /**95 * De guardian-zijdige kopie van een gate-verzoek op een REMOTE ward.96 *97 * `direction` is niet cosmetisch (shaer-jdb). Bij een INKOMENDE is de follower98 * iemand anders en de ward het doel. Bij een UITGAANDE is de ward zelf de99 * follower en staat het doel in het Follow-object -- die werd hiervoor100 * opgeslagen als "deze ward wil deze ward volgen", met het doel weggegooid.101 */102 93 export function recordReview(guardianSlug, r) { 103 const richting = r.direction === 'outgoing' ? 'outgoing' : 'incoming'; 104 rstmts().ins.run(r.id, guardianSlug, r.wardUri, r.wardInbox || null, r.follower, r.followerHandle || null, 105 r.followerIcon || null, r.followJson || null, richting, r.target || null, r.targetHandle || null); 94 rstmts().ins.run(r.id, guardianSlug, r.wardUri, r.wardInbox || null, r.follower, r.followerHandle || null, r.followerIcon || null, r.followJson || null); 106 95 return rstmts().get.get(guardianSlug, r.id); 107 }108 109 /**110 * Een openstaande review als wachtrij-item, in dezelfde vorm die de clients al111 * lezen (offers en outgoing-follows doen het net zo).112 */113 export function reviewQueueItem(r, me, guardianCount) {114 // guardianCount blijft WEG als we hem niet kennen. Bij een remote ward wordt115 // de guardian-set op diens eigen server bijgehouden, en 0 sturen zou lezen als116 // "dit kind heeft geen guardians" -- het tegenovergestelde van onbekend.117 const stemmen = (() => {118 try { return db.prepare('SELECT guardian_uri, decision FROM ap_pending_follow_approvals WHERE follow_id = ?').all(r.id); }119 catch { return []; }120 })();121 const uitgaand = r.direction === 'outgoing';122 return {123 id: r.id,124 type: 'Follow',125 // Bij een uitgaande is de WARD de volger; bij een inkomende is dat de vreemde.126 actor: uitgaand ? r.ward_uri : r.follower_uri,127 object: uitgaand ? (r.target_uri || '') : r.ward_uri,128 'shaer:direction': uitgaand ? 'outgoing' : 'incoming',129 'shaer:ward': r.ward_uri,130 'shaer:target': uitgaand ? (r.target_uri || undefined) : undefined,131 'shaer:targetHandle': uitgaand ? (r.target_handle || undefined) : undefined,132 'shaer:follower': uitgaand ? undefined : r.follower_uri,133 'shaer:followerHandle': uitgaand ? undefined : (r.follower_handle || undefined),134 'shaer:quorum': 'all',135 'shaer:approvals': stemmen.filter((x) => x.decision === 'approve').length,136 'shaer:guardianCount': guardianCount || undefined,137 'shaer:myVote': stemmen.some((x) => x.guardian_uri === me),138 published: r.created_at,139 };140 }141 142 /** De openstaande reviews van een guardian, per richting. */143 export function listReviewsByDirection(guardianSlug, direction) {144 return listReviews(guardianSlug).filter((r) => (r.direction === 'outgoing' ? 'outgoing' : 'incoming') === direction);145 96 } 146 97 export function getReview(guardianSlug, id) { return rstmts().get.get(guardianSlug, id); } … … 151 102 recordPending, getPending, listForWard, decide, remove, 152 103 recordReview, getReview, listReviews, removeReview, 153 listReviewsByDirection, reviewQueueItem,154 104 };
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)