summaryrefslogtreecommitdiff
path: root/desk/lib
diff options
context:
space:
mode:
Diffstat (limited to 'desk/lib')
-rw-r--r--desk/lib/json/nostrill.hoon33
-rw-r--r--desk/lib/scri.hoon70
-rw-r--r--desk/lib/sortug.hoon7
-rw-r--r--desk/lib/trill/post.hoon4
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]