summaryrefslogtreecommitdiff
path: root/desk/lib/nostril/mutations.hoon
diff options
context:
space:
mode:
Diffstat (limited to 'desk/lib/nostril/mutations.hoon')
-rw-r--r--desk/lib/nostril/mutations.hoon65
1 files changed, 39 insertions, 26 deletions
diff --git a/desk/lib/nostril/mutations.hoon b/desk/lib/nostril/mutations.hoon
index 68c82d3..5383947 100644
--- a/desk/lib/nostril/mutations.hoon
+++ b/desk/lib/nostril/mutations.hoon
@@ -1,15 +1,18 @@
-/- sur=nostril, post
+/- sur=nostril, post, gate, feed
/+ shim, postlib=nostril-post, sr=sortug
|_ [=state:sur =bowl:gall]
++ process-events ^- (quip card _state)
- =/ l events.state
- =| cards=(list card:agent:gall)
- |- ?~ l [cards state]
- =/ n (event-parsing i.l)
- $(cards -.n, state +.n, l t.l)
+ :: =/ l events.state
+ :: =| cards=(list card:agent:gall)
+ :: |- ?~ l [cards state]
+ :: =/ n (event-parsing i.l)
+ :: $(cards -.n, state +.n, l t.l)
+ :: TODO
+ `state
-++ event-parsing ^- (quip card _state)
+++ event-parsing
|= =event:sur
+ ^- (quip card _state)
|^
:: https://nostrdata.github.io/kinds/
?: .=(kind.event 0) :: user metadata
@@ -29,8 +32,9 @@
`state
++ parse-metadata
+ ^- (quip card _state)
=/ jstring content.event
- =/ ujon=json (de:json:html jstring)
+ =/ ujon (de:json:html jstring)
?~ ujon !!
=/ =user-meta:sur (metadata:dejs:shim u.ujon)
=/ fid (~(get by following.state) pubkey.event)
@@ -40,44 +44,53 @@
`state
- ++ parse-poast |= =event:sur
+ ++ parse-poast
+ ^- (quip card _state)
=/ fid (~(get by following.state) pubkey.event)
?~ fid `state :: don't save post if we don't follow the fucker
=/ cl (tokenize:postlib content.event)
=/ ts (from-unix:jikan:sr created-at.event)
- =/ cm (init-content-map:postlib cl ts)
+ :: TODO wtf
+ =/ cm=content-map:post (init-content-map:postlib cl ts)
- =/ =post:post :*
+ =/ p=post:post :*
id=ts
- author=pubkey.event
- thread=~
+ host=`@p`pubkey.event
+ author=`@p`pubkey.event
+ thread=ts
parent=~
+ children=~
contents=cm
read=*lock:gate
write=*lock:gate
*engagement:post
- 0
+ 0v0
*signature:post
tags=~
==
- =/ nfid (put:orm:post u.fid ts post)
- =. following.state (~(put by following.state) pubkey.event nfid)
+ =/ nfid (put:orm:feed +.u.fid ts p)
+ =. following.state (~(put by following.state) pubkey.event [-.u.fid nfid])
`state
++ parse-follow
- %+ turn tags.event |= t=tag:sur
- ?> .=('p' key.t)
- =/ pubkey value.t
- =/ relay (snag 0 rest.t)
- =/ rel ?: .=(relay '') ~ (some relay)
- =/ nickname (snag 1 rest.t)
+ ^- (quip card _state)
=/ following (~(get by follow-graph.state) pubkey.event)
- =/ meta [pubkey nickname rel]
- =/ nfollowing ?~ following (silt ~[meta]) (~(put in u.following) meta)
- =. following-graph.state (~(put by follow-graph.state) pubkey.event nfollowing)
- `state
+ =/ follow-set ?~ following *(set follow:sur) u.following
+ |- ?~ tags.event `state
+ =/ t=tag:sur i.tags.event
+ ?. .=('p' key.t) $(tags.event t.tags.event)
+ =/ pubkeys value.t
+ =/ pubkey (slaw:sr %ux pubkeys)
+ ?~ pubkey ~& "parsing hex error" $(tags.event t.tags.event)
+ =/ relay (snag 0 rest.t)
+ =/ rel ?: .=(relay '') ~ (some relay)
+ =/ nickname (snag 1 rest.t)
+ =/ meta=follow:sur [u.pubkey nickname rel]
+ =. follow-set (~(put in follow-set) meta)
+ =. follow-graph.state (~(put by follow-graph.state) pubkey.event follow-set)
+ $(tags.event t.tags.event)
--
--