blob: 538394747ac00d95a320157923fc9bdf65d796da (
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
|
/- sur=nostril, post, gate, feed
/+ shim, postlib=nostril-post, sr=sortug
|_ [=state:sur =bowl:gall]
++ 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:sur
^- (quip card _state)
|^
:: https://nostrdata.github.io/kinds/
?: .=(kind.event 0) :: user metadata
parse-metadata
?: .=(kind.event 1) :: apparently a poast, not sure which NIP
parse-poast
?: .=(kind.event 2) :: recommended reay
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 !!
=/ =user-meta:sur (metadata:dejs:shim u.ujon)
=/ fid (~(get by following.state) pubkey.event)
?~ fid `state
=/ nfid [user-meta feed.u.fid]
=. following.state (~(put by following.state) pubkey.event nfid)
`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 [-.u.fid 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:sur 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)
--
--
|