/- 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) :: TODO `state ++ event-parsing |= =event:sur ^- (quip card _state) |^ :: https://nostrdata.github.io/kinds/ ?: .=(kind.event 0) :: user metadata parse-metadata ?: .=(kind.event 1) :: apparently a poast, not sure which NIP parse-poast ?: .=(kind.event 2) :: recommended reay parse-poast ?: .=(kind.event 3) :: follow list parse-follow :: ?: .=(kind.event 5) :: delete ?: .=(kind.event 6) :: RT parse-follow ?: .=(kind.event 7) :: Reaction parse-follow `state ++ parse-metadata ^- (quip card _state) =/ jstring content.event =/ ujon (de:json:html jstring) ?~ ujon !! =/ =user-meta:sur (metadata:dejs:shim u.ujon) =/ fid (~(get by following.state) pubkey.event) ?~ fid `state =/ nfid [user-meta feed.u.fid] =. following.state (~(put by following.state) pubkey.event nfid) `state ++ 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) :: TODO wtf =/ cm=content-map:post (init-content-map:postlib cl ts) =/ p=post:post :* id=ts host=`@p`pubkey.event author=`@p`pubkey.event thread=ts parent=~ children=~ contents=cm read=*lock:gate write=*lock:gate *engagement:post 0v0 *signature:post tags=~ == =/ nfid (put:orm:feed +.u.fid ts p) =. following.state (~(put by following.state) pubkey.event [-.u.fid nfid]) `state ++ parse-follow ^- (quip card _state) =/ following (~(get by follow-graph.state) pubkey.event) =/ 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) -- --