summaryrefslogtreecommitdiff
path: root/desk/lib/json/nostrill.hoon
blob: 43f77085c1b7d8963be66e3dfb85d95a95c9af34 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
/-  sur=nostrill, nsur=nostr, feed=trill-feed
/+  sr=sortug, common=json-common, trill=json-trill, nostr=json-nostr
|%
++  en
=,  enjs:format
|%
  ::  UI comms
  ++  state  |=  state-0:sur  ^-  json
  %:  pairs
    relays+(en-relays relays)
    key+(hex:en:common pub.i.keys)
    profiles+(en-profiles profiles)
    :: TODO proper cursors
    feed+(feed-with-cursor:en:trill feed ~ ~)
    nostr+(en-nostr-feed nostr-feed)
    following+(enfollowing following)
    ['followGraph' (engraph follow-graph)]
  ~
  ==
  ++  en-nostr-feed
  |=  feed=nostr-feed:sur  ^-  json
    :-  %a  %+  turn  (tap:norm:sur feed)  |=  [id=@ud ev=event:nsur]
      (event:en:nostr ev)

  ++  en-relays
  |=  r=(map @t relay-stats:nsur)  ^-  json
    %-  pairs  %+  turn  ~(tap by r)
    |=  [url=@t rs=relay-stats:nsur]
      :-  url  %-  pairs
        :~  :-  %connected  ?~  connected.rs  ~  (time u.connected.rs)
            :-  %reqs  (relay-stats reqs.rs)
        ==
  ++  relay-stats  |=  rm=(map @t event-stats:nsur)
    %-  pairs  %+  turn  ~(tap by rm)  |=  [sub-id=@t es=event-stats:nsur]
      :: TODO do we even need this
      :-  sub-id  (numb received.es)

  ++  en-profiles  |=  m=(map @ux user-meta:nsur)
    %-  pairs
      %+  turn  ~(tap by m)  |=  [key=@ux p=user-meta:nsur]
        :-  (crip (scow:sr %ux key))  (user-meta:en:nostr p)

  ++  enfollowing
  |=  m=(map @ux feed:feed)
  ^-  json
    %-  pairs  %+  turn  ~(tap by m)  |=  [key=@ux f=feed:feed]
    :-  (crip (scow:sr %ux key))  (feed:en:trill f)

  ++  engraph
  |=  m=(map @ux (set follow:sur))
    ^-  json
    %-  pairs  %+  turn  ~(tap by m)  |=  [key=@ux s=(set follow:sur)]
    :-  (crip (scow:sr %ux key))
    :-  %a   %+  turn  ~(tap in s)  |=  f=follow:sur
    %-  pairs
      :~  pubkey+(hex:en:common pubkey.f)
          name+s+name.f
          :-  %relay  ?~  relay.f  ~  s+u.relay.f
      ==


  --
++  de
=,  dejs-soft:format
|%
  :: ui
++  ui
  %-  of  :~
    keys+ul
    fols+ui-fols
    prof+ui-prof
    post+ui-post
    rela+ui-relay
  ==
++  ui-fols
  %-  of  :~
    add+hex:de:common
    del+hex:de:common
  ==
++  ui-prof
  %-  of  :~
    add+add-prof
    del+hex:de:common
  ==
++  add-prof  %-  ot  :~
  pubkey+hex:de:common
  meta+user-meta:de:nostr
==
++  ui-post
  %-  of  :~
    add+de-post
    rt+de-rt
    del+hex:de:common
  ==
++  de-post
  %-  ot  :~
    pubkey+hex:de:common
    content+so
  ==
++  de-rt
  %-  ot  :~
    id+hex:de:common
    pubkey+hex:de:common
    relay+so
  ==
++  ui-relay
  %-  of  :~
    send+de-relay
  ==
++  de-relay  %-  ot  :~
    host+(se:de:common %p)
    id+de-atom-id
    relays+(ar so)
  ==
++  de-atom-id
  |=  jon=json
  ?.  ?=([%s @t] jon)  ~
  (rush p.jon dem)

  --
      
--