blob: f7de23b1155cbaf590702976db76d86da0ecbd05 (
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
|
/- sur=nostril, nsur=nostr,
post=trill-post, gate=trill-gate, feed=trill-feed
/+ appjs=json-nostril,
njs=json-nostr,
postlib=nostril-post,
sr=sortug
|_ [=state:sur =bowl:gall]
++ debug-own-feed
=/ postlist (tap:orm:feed feed.state)
=/ lol
|- ?~ postlist ~
~& >> poast=+.i.postlist
$(postlist t.postlist)
~
:: TODO not a mutation but fuck it
++ get-poast |= [host=@p id=@] ^- (unit post:post)
=/ poast ?: .=(host our.bowl)
(get:orm:feed feed.state id)
~
poast
:: state
++ add-to-feed |= p=post:post
=. feed.state (put:orm:feed feed.state id.p p)
state
:: events
++ process-events ^- (quip card _state)
:: =/ l events.state
:: =| cards=(list card:agent:gall)
:: |- ?~ l [cards state]
:: =/ n (event-parsing i.l)
:: $(cards -.n, state +.n, l t.l)
:: TODO
`state
++ event-parsing
|= =event:nsur
^- (quip card _state)
|^
:: https://nostrdata.github.io/kinds/
?: .=(kind.event 0) :: user metadata
parse-metadata
?: .=(kind.event 1) :: apparently a poast
parse-poast
?: .=(kind.event 3) :: follow list
parse-follow
:: ?: .=(kind.event 5) :: delete
?: .=(kind.event 6) :: RT
parse-follow
?: .=(kind.event 7) :: Reaction
parse-follow
`state
++ parse-metadata
^- (quip card _state)
=/ jstring content.event
=/ ujon (de:json:html jstring)
?~ ujon !!
=/ umeta (user-meta:de:njs u.ujon)
?~ umeta `state
=. profiles.state (~(put by profiles.state) pubkey.event u.umeta)
`state
++ parse-poast
^- (quip card _state)
=/ fid (~(get by following.state) pubkey.event)
?~ fid `state :: don't save post if we don't follow the fucker
=/ cl (tokenize:postlib content.event)
=/ ts (from-unix:jikan:sr created-at.event)
:: TODO wtf
=/ cm=content-map:post (init-content-map:postlib cl ts)
=/ p=post:post :*
id=ts
host=`@p`pubkey.event
author=`@p`pubkey.event
thread=ts
parent=~
children=~
contents=cm
read=*lock:gate
write=*lock:gate
*engagement:post
0v0
*signature:post
tags=~
==
=/ nfid (put:orm:feed u.fid ts p)
=. following.state (~(put by following.state) pubkey.event nfid)
`state
++ parse-follow
^- (quip card _state)
=/ following (~(get by follow-graph.state) pubkey.event)
=/ follow-set ?~ following *(set follow:sur) u.following
|- ?~ tags.event `state
=/ t=tag:nsur i.tags.event
:: ?. .=('p' key.t) $(tags.event t.tags.event)
:: =/ pubkeys value.t
:: =/ pubkey (slaw:sr %ux pubkeys)
:: ?~ pubkey ~& "parsing hex error" $(tags.event t.tags.event)
:: =/ relay (snag 0 rest.t)
:: =/ rel ?: .=(relay '') ~ (some relay)
:: =/ nickname (snag 1 rest.t)
:: =/ meta=follow:sur [u.pubkey nickname rel]
:: =. follow-set (~(put in follow-set) meta)
:: =. follow-graph.state (~(put by follow-graph.state) pubkey.event follow-set)
$(tags.event t.tags.event)
--
--
|