diff options
| author | polwex <polwex@sortug.com> | 2025-11-18 16:58:46 +0700 |
|---|---|---|
| committer | polwex <polwex@sortug.com> | 2025-11-18 16:58:46 +0700 |
| commit | 76f99af3c98a689441315b5ed087c4b83c083191 (patch) | |
| tree | b51182eda47f4b3311c352a86d8256e417af4db5 /app/lib/nostr/events.hoon | |
| parent | a465c73178dc621578d10312f263355f0f2d5309 (diff) | |
refactooooring
Diffstat (limited to 'app/lib/nostr/events.hoon')
| -rw-r--r-- | app/lib/nostr/events.hoon | 81 |
1 files changed, 79 insertions, 2 deletions
diff --git a/app/lib/nostr/events.hoon b/app/lib/nostr/events.hoon index 6f287a7..16beabc 100644 --- a/app/lib/nostr/events.hoon +++ b/app/lib/nostr/events.hoon @@ -1,6 +1,7 @@ /- sur=nostrill, nsur=nostr, post=trill-post, gate=trill-gate /+ js=json-nostr, sr=sortug, trill=trill-post, nostr-keys |% +:: filters ++ is-feed |= fs=(list filter:nsur) ^- ? |- ?~ fs .n =/ filter i.fs @@ -13,16 +14,92 @@ == .y $(fs t.fs) +++ user-req |= fs=(list filter:nsur) ^- (set @ux) + =| pubkeys=(set @ux) + |- ?~ fs pubkeys + =/ filter i.fs + ?~ kinds.filter ~ + ?~ authors.filter ~ + ?: (~(has in u.kinds.filter) 0) ~ + =? pubkeys + ?& (~(has in u.kinds.filter) 1) + ?=(%~ ids.filter) + == (~(uni in pubkeys) u.authors.filter) + $(fs t.fs) +++ posts-req |= fs=(list filter:nsur) ^- (set @ux) + =| ids=(set @ux) + |- ?~ fs ids + =/ filter i.fs + ?~ kinds.filter ~ + ?~ ids.filter ~ + =? ids (~(has in u.kinds.filter) 1) (~(uni in ids) u.ids.filter) + $(fs t.fs) + +++ replies-req |= fs=(list filter:nsur) ^- (set @ux) + =| ids=(set @ux) + |- ?~ fs ids + =/ filter i.fs + =/ parent (replies-filter filter) + =? ids ?=(^ parent) (~(put in ids) u.parent) + $(fs t.fs) + +++ thread-req |= fs=(list filter:nsur) ^- (unit @ux) + =| parent=(unit @ux) + |- ?~ fs ~ + =/ filter i.fs + ?~ parent + =/ upid (post-filter filter) + $(fs t.fs, parent upid) + =/ replies-parent (replies-filter i.fs) + ?: ?& ?=(^ replies-parent) + .=(u.replies-parent u.parent) + == parent + $(fs t.fs) + +++ post-filter |= =filter:nsur ^- (unit @ux) + ?~ kinds.filter ~ + ?~ ids.filter ~ + =/ post-filter (silt ~[1]) + ?. .=(u.kinds.filter post-filter) ~ + =/ idl ~(tap in u.ids.filter) + ?~ idl ~ + ?. .=(1 (lent idl)) ~ + `i.idl + +++ replies-filter |= =filter:nsur ^- (unit @ux) + ?~ kinds.filter ~ + ?~ tags.filter ~ + =/ post-filter (silt ~[1]) + ?. .=(u.kinds.filter post-filter) ~ + =/ tag (~(get by u.tags.filter) 'e') + ?~ tag ~ + ?~ u.tag ~ + =/ reference (slaw:sr %ux i.u.tag) + reference + ++ is-posts-no-prof |= fs=(list filter:nsur) ^- ? =/ has-posts .n |- ?~ fs has-posts =/ filter i.fs ?~ kinds.filter .n ?: (~(has in u.kinds.filter) 0) .n - =. has-posts - ?: (~(has in u.kinds.filter) 1) .y has-posts + =? has-posts (~(has in u.kinds.filter) 1) .y $(fs t.fs) + +:: events +++ get-references |= ev=event:nsur ^- (set @ux) + =| ids=(set @ux) + =/ tags tags.ev + |- ?~ tags ids + =/ tag i.tags + ?~ tag $(tags t.tags) + ?. .=('e' i.tag) $(tags t.tags) + ?~ t.tag $(tags t.tags) + =/ ref (slaw:sr %ux i.t.tag) + =? ids ?=(^ ref) (~(put in ids) u.ref) + $(tags t.tags) + ++ post-to-event |= [=keys:nsur eny=@ p=post:post] ^- event:nsur =/ cl (latest-post-content:trill contents.p) =/ string (crip (content-list-to-md:trill cl)) |
