summaryrefslogtreecommitdiff
path: root/desk/lib/nostrill
diff options
context:
space:
mode:
Diffstat (limited to 'desk/lib/nostrill')
-rw-r--r--desk/lib/nostrill/comms.hoon4
-rw-r--r--desk/lib/nostrill/follows.hoon7
-rw-r--r--desk/lib/nostrill/mutations.hoon250
3 files changed, 5 insertions, 256 deletions
diff --git a/desk/lib/nostrill/comms.hoon b/desk/lib/nostrill/comms.hoon
index 23e442a..5ae07a0 100644
--- a/desk/lib/nostrill/comms.hoon
+++ b/desk/lib/nostrill/comms.hoon
@@ -83,8 +83,10 @@
=/ c2 [%give %kick paths ~]
:~(c1 c2)
:: for the follow flow
- =/ cage [%noun !>(res)]
+ =/ cage [%noun !>([%init res])]
=/ c1 [%give %fact paths cage]
:~(c1)
+
+
--
diff --git a/desk/lib/nostrill/follows.hoon b/desk/lib/nostrill/follows.hoon
index 1cf8a66..9cda041 100644
--- a/desk/lib/nostrill/follows.hoon
+++ b/desk/lib/nostrill/follows.hoon
@@ -31,10 +31,7 @@
=/ c2 (urbit-leave +.user)
:~(c1 c2)
-++ handle-agent-res |= raw=*
- ~& "handling-agent-res"
- =/ =res:comms ;; res:comms raw
- ~& res=-.res
+++ handle-follow-res |= =res:comms
?- -.res
%ng :: bruh
`state
@@ -47,7 +44,7 @@
++ handle-refollow |= sip=@p
:_ state :_ ~
:: (urbit-watch sip)
- [%pass /refollow %agent [sip dap.bowl] %watch /followre]
+ [%pass /follow %agent [sip dap.bowl] %watch /follow]
++ handle-follow-ok |= [=user:sur =fc:feed profile=(unit user-meta:nsur)]
^- (quip card:agent:gall _state)
diff --git a/desk/lib/nostrill/mutations.hoon b/desk/lib/nostrill/mutations.hoon
deleted file mode 100644
index 8fca2b2..0000000
--- a/desk/lib/nostrill/mutations.hoon
+++ /dev/null
@@ -1,250 +0,0 @@
-/- sur=nostrill, nsur=nostr,
- post=trill-post, gate=trill-gate, feed=trill-feed
-
-/+ appjs=json-nostrill,
- lib=nostrill,
- njs=json-nostr,
- postlib=trill-post,
- shim,
- sr=sortug
-
-|_ [=state:sur =bowl:gall]
-+$ card card:agent:gall
-++ debug-own-feed
- =/ postlist (tap:orm:feed feed.state)
- =/ lol
- |- ?~ postlist ~
- ~& >> poast=+.i.postlist
- $(postlist t.postlist)
- ~
-:: TODO not a mutation but fuck it
-++ get-poast |= [host=@p id=@] ^- (unit post:post)
- =/ poast ?: .=(host our.bowl)
- (get:orm:feed feed.state id)
- ~
- poast
-
-:: state
-++ add-to-feed |= p=post:post
- =. feed.state (put:orm:feed feed.state id.p p)
- state
-:: events
-++ 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
-
-:: ++ parse-events
-:: |= evs=(list event:nsur)
-:: ^- (quip card _state)
-:: =| cards=(list card)
-:: =^ cards state
-:: |- ?~ evs [cards state]
-:: =^ cards state (handle-event i.evs)
-:: $(evs t.evs)
-:: [cards state]
-
-++ populate-profiles
- |= pubkeys=(set @ux)
- ^- (quip card _state)
- =/ shimm ~(. shim [state bowl])
- =^ cards state (get-profiles-http:shimm pubkeys)
- [cards state]
-
-
-
-
-
-++ handle-http
- |= [sub-id=@t msgs=(list relay-msg:nsur)]
- ~& handling-http=[sub-id (lent msgs)]
- =| cards=(list card)
- |- ?~ msgs [cards state]
- =^ cards state (handle-msg i.msgs)
- $(msgs t.msgs)
-
-
-++ handle-msg |= msg=relay-msg:nsur
- ^- (quip card _state)
- ?+ -.msg `state
- %event
- (handle-event '' sub-id.msg event.msg)
- %eose
- `state
- %closed
- `state
- %auth ~& >> auth=+.msg :: TODO handle auth challenges?
- `state
- %notice ~& >> notice=+.msg :: TODO pass to UI?
- `state
- %error ~& >>> relay-error=+.msg
- `state
- ==
-
-++ handle-ws |= [relay=@t msg=relay-msg:nsur]
- =/ rs (~(get by relays.state) relay)
- ?~ rs :: TODO do we really
- `state
- =^ cards state
- ~& handle-ws=-.msg
- ?- -.msg
- %ok (handle-ok relay +.msg)
- %event
- =. relays.state (update-relay-stats relay sub-id.msg)
- (handle-event relay sub-id.msg event.msg)
-
- %eose
- :: TODO do unsub for replaceable/addressable events
- =/ creq (~(get by reqs.u.rs) +.msg)
- ?~ creq `state
- :: =. reqs.u.rs (~(del by reqs.u.rs) +.msg)
- :: =. relays.state (~(put by relays.state) relay u.rs)
- =/ cardslib ~(. cards:lib bowl)
- =/ c (update-ui:cardslib [%nostr nostr-feed.state])
- :_ state :~(c)
- %closed =. reqs.u.rs (~(del by reqs.u.rs) sub-id.msg)
- =. relays.state (~(put by relays.state) relay u.rs)
- `state
- %auth ~& >> auth=+.msg :: TODO handle auth challenges?
- `state
- %notice ~& >> notice=+.msg :: TODO pass to UI?
- `state
- %error ~& >>> relay-error=+.msg
- =. relays.state (~(del by relays.state) relay)
- `state
- ==
- [cards state]
-
-
- :: =^ cards state (handle-event:mutat url.u.msg sub-id.u.msg event.u.msg)
- :: :: TODO not just stash events
- :: =/ relay (~(get by relays) url.u.msg)
- :: =/ nevents=(list event:nsur) ?~ relay [event.u.msg ~] [event.u.msg u.relay]
- :: =/ nevents2 (scag 100 nevents)
-
- :: =. relays (~(put by relays) url.u.msg nevents2)
- :: :: TODO respond better
- :: =/ response (ebail:rout id.order)
- :: =/ ncards (weld cards response)
-
- :: [ncards this]
- :: `state
-
-++ update-relay-stats
- |= [relay=@t sub-id=@t] ^+ relays.state
-
- =/ cur (~(get by relays.state) relay)
- =/ curr ?~ cur *relay-stats:nsur u.cur
- =? connected.curr ?=(%~ connected.curr) (some now.bowl)
- =/ creq (~(get by reqs.curr) sub-id)
- ?~ creq relays.state :: bail
- =/ nreq u.creq(received +(received.u.creq))
- =. reqs.curr (~(put by reqs.curr) sub-id nreq)
- (~(put by relays.state) relay curr)
-
-++ handle-ok |= [relay=@t event-id=@ux accepted=? msg=@t]
- ^- (quip card _state)
- :: TODO pass to UI
- `state
-
-
-++ handle-event
- |= [relay=@t sub-id=@t =event:nsur]
- ^- (quip card _state)
- |^
- ~& parsing-nostr-event=kind.event
-:: https://nostrdata.github.io/kinds/
- ?: .=(kind.event 666) :: one_off subs eose cf. 999
- parse-shim-oneose
- ?: .=(kind.event 0) :: user metadata
- parse-metadata
- ?: .=(kind.event 1) :: apparently a poast
- 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 ~& failed-parse-metadata=ujon `state
- =/ umeta (user-meta:de:njs u.ujon)
- ?~ umeta ~& >> failed-dejs-metadata=ujon `state
- =. profiles.state (~(put by profiles.state) [%nostr pubkey.event] u.umeta)
- `state
-
-
- ++ parse-poast
- ^- (quip card _state)
- =. nostr-feed.state (put:norm:sur nostr-feed.state created-at.event event)
- :: =/ uprof (~(get by profiles.state) pubkey.event)
- :: ?~ uprof
- :: =/ shimm ~(. shim [state bowl])
- :: =^ cards state (get-profiles:shimm (silt ~[pubkey.event]))
- :: [cards 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 nfid)
- `state
- ++ parse-follow
- ^- (quip card _state)
- =/ following (~(get by follow-graph.state) [%nostr pubkey.event])
- =/ follow-set ?~ following *(set follow:sur) u.following
- |- ?~ tags.event `state
- =/ t=tag:nsur 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)
- ++ parse-shim-oneose
- ^- (quip card _state)
- =/ rs (~(get by relays.state) relay)
- ?~ rs `state
- =. reqs.u.rs (~(del by reqs.u.rs) sub-id)
- =. relays.state (~(put by relays.state) relay u.rs)
- `state
- --
---