diff options
Diffstat (limited to 'desk/lib/nostril/mutations.hoon')
-rw-r--r-- | desk/lib/nostril/mutations.hoon | 65 |
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) -- -- |