summaryrefslogtreecommitdiff
path: root/app/lib/nostr/events.hoon
diff options
context:
space:
mode:
authorpolwex <polwex@sortug.com>2025-11-18 16:58:46 +0700
committerpolwex <polwex@sortug.com>2025-11-18 16:58:46 +0700
commit76f99af3c98a689441315b5ed087c4b83c083191 (patch)
treeb51182eda47f4b3311c352a86d8256e417af4db5 /app/lib/nostr/events.hoon
parenta465c73178dc621578d10312f263355f0f2d5309 (diff)
refactooooring
Diffstat (limited to 'app/lib/nostr/events.hoon')
-rw-r--r--app/lib/nostr/events.hoon81
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))