/- post=trill-post, nsur=nostr, sur=nostrill, gate=trill-gate /+ trill=trill-post, nostr, sr=sortug, jsonlib=json-nostrill |% :: ++ default-state |= =bowl:gall ^- state:sur =/ s *state-0:sur =/ l public-relays:nsur :: =/ l (scag 1 l) :: =/ l ~['wss://relay.damus.io' 'wss://nos.lol'] =/ rl %+ turn l |= t=@t [t *relay-stats:nsur] :: =/ l ~[['wss://relay.damus.io' ~]] =/ key (gen-keys:nostr eny.bowl) =/ keyl [key ~] s(relays (malt rl), keys keyl) ++ print-relay-stats |= rm=(map @t relay-stats:nsur) =/ l ~(tap by rm) |- ?~ l ~ =/ [url=@t rs=relay-stats:nsur] i.l ~& relay=url ~& connected=connected.rs ~& sub-count=~(wyt by reqs.rs) =/ total-received %+ roll ~(tap by reqs.rs) |= [[* es=event-stats:nsur] acc=@ud] %+ add acc received.es ~& >> total=total-received $(l t.l) :: ++ 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)) =/ ts (to-unix-secs:jikan:sr id.p) =/ raw=raw-event:nsur [pub.keys ts 1 ~ string] =/ event-id (hash-event:nostr raw) =/ signature (sign-event:nostr priv.keys event-id eny) ~& hash-and-signed=[event-id signature] =/ =event:nsur :* event-id pub.keys created-at.raw kind.raw tags.raw content.raw signature == event ++ event-to-post |= [=event:nsur profile=(unit user-meta:nsur) relay=(unit @t)] ^- post-wrapper:sur =/ cl (tokenize:trill content.event) =/ ts (from-unix:jikan:sr created-at.event) =/ cm=content-map:post (init-content-map:trill cl ts) :: TODO more about @ps and stuff =/ 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=~ == =/ meta [(some pubkey.event) (some id.event) relay profile] [p meta] ++ cards |_ =bowl:gall ++ shim-binding ^- card:agent:gall [%pass /binding %arvo %e %connect [~ /nostr-shim] dap.bowl] ++ update-ui |= =fact:ui:sur ^- card:agent:gall =/ jon (fact:en:jsonlib fact) [%give %fact ~[/ui] %json !>(jon)] -- --