diff options
Diffstat (limited to 'desk/lib')
-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 |
4 files changed, 107 insertions, 7 deletions
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] |