/- sur=nostril, post /+ 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) ++ event-parsing ^- (quip card _state) |= =event:sur |^ :: 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 =/ jstring content.event =/ ujon=json (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 |= =event:sur =/ 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) =/ =post:post :* id=ts author=pubkey.event thread=~ parent=~ contents=cm read=*lock:gate write=*lock:gate *engagement:post 0 *signature:post tags=~ == =/ nfid (put:orm:post u.fid ts post) =. following.state (~(put by following.state) pubkey.event 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) =/ 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 -- --