diff options
Diffstat (limited to 'desk')
-rw-r--r-- | desk/app/nostrill.hoon | 52 | ||||
-rw-r--r-- | desk/lib/json/nostrill.hoon | 33 | ||||
-rw-r--r-- | desk/lib/scri.hoon | 70 | ||||
-rw-r--r-- | desk/lib/sortug.hoon | 7 | ||||
-rw-r--r-- | desk/lib/trill/post.hoon | 4 | ||||
-rw-r--r-- | desk/sur/nostrill.hoon | 7 | ||||
-rw-r--r-- | desk/ted/beg.hoon | 14 |
7 files changed, 168 insertions, 19 deletions
diff --git a/desk/app/nostrill.hoon b/desk/app/nostrill.hoon index 37aaf06..721a590 100644 --- a/desk/app/nostrill.hoon +++ b/desk/app/nostrill.hoon @@ -1,5 +1,5 @@ -/- sur=nostrill, nsur=nostr -/+ lib=nostrill, nlib=nostr, sr=sortug, +/- sur=nostrill, nsur=nostr, tf=trill-feed +/+ lib=nostrill, nlib=nostr, sr=sortug, scri, shim, dbug, muta=nostrill-mutations, jsonlib=json-nostrill, trill=trill-post, comms=nostrill-comms, followlib=nostrill-follows /= web /web/router @@ -16,6 +16,7 @@ cards ~(. cards:lib bowl) mutat ~(. muta [state bowl]) shimm ~(. shim [state bowl]) + scry ~(. scri [state bowl]) coms ~(. comms [state bowl]) fols ~(. followlib [state bowl]) ++ on-init @@ -95,7 +96,38 @@ ++ handle-post |= poke=post-poke:ui:sur ?- -.poke %add - =/ sp (build-sp:trill our.bowl our.bowl content.poke) + =/ sp (build-sp:trill our.bowl our.bowl content.poke ~ ~) + =/ p (build-post:trill now.bowl pub.i.keys sp) + =. state (add-to-feed:mutat p) + =/ profile (~(get by profiles) [%urbit our.bowl]) + =/ pw [p (some pub.i.keys) ~ ~ profile] + =/ =fact:ui:sur [%post %add pw] + =/ card (update-ui:cards fact) + :_ this :~(card) + %quote + =/ sp (build-sp:trill our.bowl our.bowl content.poke ~ ~) + =/ quote [%ref %trill host.poke /(crip (scow:sr %ud id.poke))] + =. contents.sp (snoc contents.sp quote) + =/ p (build-post:trill now.bowl pub.i.keys sp) + =. state (add-to-feed:mutat p) + =/ profile (~(get by profiles) [%urbit our.bowl]) + =/ pw [p (some pub.i.keys) ~ ~ profile] + =/ =fact:ui:sur [%post %add pw] + =/ card (update-ui:cards fact) + :_ this :~(card) + %reply + =/ sp (build-sp:trill host.poke our.bowl content.poke `id.poke `thread.poke) + =/ p (build-post:trill now.bowl pub.i.keys sp) + =. state (add-to-feed:mutat p) + =/ profile (~(get by profiles) [%urbit our.bowl]) + =/ pw [p (some pub.i.keys) ~ ~ profile] + =/ =fact:ui:sur [%post %add pw] + =/ card (update-ui:cards fact) + :_ this :~(card) + %rp + =/ quote [%ref %trill host.poke /(crip (scow:sr %ud id.poke))] + =/ sp (build-sp:trill host.poke our.bowl '' ~ ~) + =. contents.sp ~[quote] =/ p (build-post:trill now.bowl pub.i.keys sp) =. state (add-to-feed:mutat p) =/ profile (~(get by profiles) [%urbit our.bowl]) @@ -104,8 +136,8 @@ =/ card (update-ui:cards fact) :_ this :~(card) - %rt `this - %del `this + :: %rt `this + :: %del `this == ++ handle-begs |= poke=begs-poke:ui:sur ?- -.poke @@ -174,7 +206,9 @@ ~& priv=(scow:sr %ux +.key) $(ks t.ks) %feed - =/ lol debug-own-feed:mutat + :: =/ lol debug-own-feed:mutat + ~& pry=(pry:orm:tf feed) + ~& ram=(ram:orm:tf feed) `this %nstats ~& nostr-feed=~(wyt by nostr-feed) @@ -280,9 +314,11 @@ ^- (unit (unit cage)) ~& > on-peek=pole ?+ pole ~ - [%j %feed rest=*] ~ - [%j %post rest=*] ~ + [%x %j %feed host=@ start=@ end=@ count=@ newest=@ replies=@ *] + (sfeed:scry host.pole start.pole end.pole count.pole newest.pole replies.pole) + [%x %j %thread host=@ id=@ *] (thread:scry host.pole id.pole) == + :: ++ on-agent |~ [wire=(pole knot) =sign:agent:gall] diff --git a/desk/lib/json/nostrill.hoon b/desk/lib/json/nostrill.hoon index 3c6f21b..b07de61 100644 --- a/desk/lib/json/nostrill.hoon +++ b/desk/lib/json/nostrill.hoon @@ -187,15 +187,36 @@ ?. ?=(%o -.jon) ~ (some p.jon) ++ ui-post %- of :~ - add+de-post - rt+de-rt - del+hex:de:common + add+postadd + reply+reply + quote+quote + rp+rp + :: rt+de-rt + :: del+hex:de:common == -++ de-post +++ postadd %- ot :~ content+so == -++ de-rt +++ reply + %- ot :~ + content+so + host+(se:de:common %p) + id+de-atom-id + thread+de-atom-id + == +++ quote + %- ot :~ + content+so + host+(se:de:common %p) + id+de-atom-id + == +++ rp + %- ot :~ + host+(se:de:common %p) + id+de-atom-id + == +++ rt %- ot :~ id+hex:de:common pubkey+hex:de:common @@ -214,7 +235,7 @@ relays+(ar so) == ++ de-atom-id - |= jon=json + |= jon=json ^- (unit @) ?. ?=([%s @t] jon) ~ (rush p.jon dem) diff --git a/desk/lib/scri.hoon b/desk/lib/scri.hoon new file mode 100644 index 0000000..b590624 --- /dev/null +++ b/desk/lib/scri.hoon @@ -0,0 +1,70 @@ +/- sur=nostrill, nsur=nostr, comms=nostrill-comms, + post=trill-post, gate=trill-gate, feed=trill-feed + +/+ appjs=json-nostrill, + lib=nostrill, + njs=json-nostr, + feedlib=trill-feed, + postlib=trill-post, + shim, + constants, + sr=sortug + +|_ [=state:sur =bowl:gall] ++$ card card:agent:gall +++ thread |= [hs=@t ids=@t] + ^- (unit (unit cage)) :- ~ :- ~ :- %json !> + %- beg-res:en:appjs + ^- res:comms + =/ host (slaw %p hs) + ?~ host [%ng 'Host is not a @p'] + :: TODO what about non urbit stuff + =/ =user:sur [%urbit u.host] + =/ fed=(unit feed:feed) ?: .=(u.host our.bowl) `feed.state (~(get by following.state) user) + ?~ fed [%ng 'Feed not found'] + =/ id (slaw:sr %ud ids) ?~ id [%ng 'Post ID malformed'] + =/ node (get:orm:feed u.fed u.id) + ?~ node [%ng 'Post not found in feed'] + =/ fn (node-to-full:feedlib u.node u.fed) + [%ok %thread fn] + +++ sfeed |= [hs=@t s=@t e=@t c=@ n=@ r=@] + ^- (unit (unit cage)) :- ~ :- ~ :- %json !> + %- beg-res:en:appjs + ^- res:comms + =/ host (slaw %p hs) + ?~ host [%ng 'Host is not a @p'] + =/ =user:sur [%urbit u.host] + =/ fed=(unit feed:feed) ?: .=(u.host our.bowl) `feed.state (~(get by following.state) user) + ?~ fed [%ng 'Feed not found'] + =/ start=(unit @da) (timestamp:sr s) + =/ end (timestamp:sr e) + =/ cont (slaw:sr %ud c) + =/ count ?~ cont feed-page-size:constants u.cont + =/ newest !=('0' n) + :: =/ nodelist (tap:orm:feed u.fed) + :: =/ replies=? !=('0' r) + :: =/ threads %+ skim nodelist + :: |= [=id:post =post:post] ^- ? + :: ?. replies + :: ?& + :: ?= %~ parent.post + :: (lte id start) (gte id end) + :: == + :: ?& (lte id start) (gte id end) == + :: =/ thread-count (lent threads) + :: =/ result=(list [id:post post:post]) ?: newest (scag count threads) (flop (scag count (flop threads))) + :: =/ cursors=[(unit @da) (unit @da)] ?~ result [~ ~] ?~ threads [~ ~] :- + :: ?: .=((head result) (head threads)) ~ `id:(head result) + :: ?: .=((rear result) (rear threads)) ~ `id:(rear result) + :: =/ =fc:feed [(gas:orm:feed *feed:feed result) -.cursors +.cursors] + :: TODO counts and order + =/ nf (lot:orm:feed u.fed start end) + =/ hed (pry:orm:feed nf) + =/ tal (ram:orm:feed nf) + =/ ns=(unit @da) ?~ hed ~ (some key.u.hed) + =/ ne=(unit @da) ?~ tal ~ (some key.u.tal) + =/ =fc:feed [nf ns ne] + =/ profile (~(get by profiles.state) user) + [%ok %feed fc profile] +-- diff --git a/desk/lib/sortug.hoon b/desk/lib/sortug.hoon index eec99ae..70aa3b8 100644 --- a/desk/lib/sortug.hoon +++ b/desk/lib/sortug.hoon @@ -35,6 +35,13 @@ %uv (rush txt vum:ag) %uw (rush txt b64) == +:: secs +++ timestamp |= s=@t ^- (unit @da) + =/ un (slaw %ud s) ?~ un ~ + =/ secs (from-unix:jikan u.un) + (some secs) + + ++ csplit |* =rule (more rule (cook crip (star ;~(less rule next)))) :: List utils diff --git a/desk/lib/trill/post.hoon b/desk/lib/trill/post.hoon index 5bed037..968bcad 100644 --- a/desk/lib/trill/post.hoon +++ b/desk/lib/trill/post.hoon @@ -2,7 +2,7 @@ /+ sr=sortug, mdlib=markdown |% ++ build-sp - |= [host=@p author=@p input=@t] + |= [host=@p author=@p input=@t parent=(unit @) thread=(unit @)] ^- sent-post:tp =/ cl (tokenise input) ~| "parsing error!!" @@ -12,6 +12,8 @@ host host author author contents +.cl + parent parent + thread thread == ++ build-post |= [now=@da pubkey=@ux sp=sent-post:tp] diff --git a/desk/sur/nostrill.hoon b/desk/sur/nostrill.hoon index b443ca8..b5bca13 100644 --- a/desk/sur/nostrill.hoon +++ b/desk/sur/nostrill.hoon @@ -49,8 +49,11 @@ $: pub=(unit @ux) == +$ post-poke $% [%add content=@t] - [%rt id=@ux pubkey=@ux relay=@t] :: NIP-18 - [%del pubkey=@ux] + [%reply content=@t host=@p id=@ thread=@] + [%quote content=@t host=@p id=@] + [%rp host=@p id=@] :: NIP-18 + :: [%rt id=@ux pubkey=@ux relay=@t] :: NIP-18 + :: [%del pubkey=@ux] == +$ fols-poke $% [%add =user] diff --git a/desk/ted/beg.hoon b/desk/ted/beg.hoon index 2cabbea..61d79c1 100644 --- a/desk/ted/beg.hoon +++ b/desk/ted/beg.hoon @@ -1,5 +1,5 @@ /- spider -/+ strandio, jsonlib=json-nostrill +/+ strandio, jsonlib=json-nostrill, sr=sortug =, strand=strand:spider =, strand-fail=strand-fail:libstrand:spider ^- thread:spider @@ -23,7 +23,17 @@ (pure:m !>(j)) %thread - (pure:m !>(bail)) + ;< =bowl:spider bind:m get-bowl:strandio + =/ desk q.byk.bowl + ~& dock=[+>.u.req desk] + =/ ship=@p +>-.u.req + =/ id=@da +>+.u.req + =/ ids (crip (scow:sr %uw `@`id)) + =/ wire /beg/thread/[ids] + ;< =cage bind:m (watch-one:strandio wire [ship desk] wire) + ~& > watch-cage=-.cage + =/ j !<(json +.cage) + (pure:m !>(j)) == ++ bail ^- json %+ frond:enjs:format %error |