summaryrefslogtreecommitdiff
path: root/desk
diff options
context:
space:
mode:
Diffstat (limited to 'desk')
-rw-r--r--desk/app/nostrill.hoon52
-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
-rw-r--r--desk/sur/nostrill.hoon7
-rw-r--r--desk/ted/beg.hoon14
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