blob: 68c82d37a650b97df831963d21eb564a3a184080 (
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
|
/- sur=nostril, post
/+ 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)
++ event-parsing ^- (quip card _state)
|= =event:sur
|^
:: 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
=/ jstring content.event
=/ ujon=json (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 |= =event:sur
=/ 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)
=/ cm (init-content-map:postlib cl ts)
=/ =post:post :*
id=ts
author=pubkey.event
thread=~
parent=~
contents=cm
read=*lock:gate
write=*lock:gate
*engagement:post
0
*signature:post
tags=~
==
=/ nfid (put:orm:post u.fid ts post)
=. following.state (~(put by following.state) pubkey.event nfid)
`state
++ parse-follow
%+ turn tags.event |= t=tag:sur
?> .=('p' key.t)
=/ pubkey value.t
=/ relay (snag 0 rest.t)
=/ rel ?: .=(relay '') ~ (some relay)
=/ nickname (snag 1 rest.t)
=/ following (~(get by follow-graph.state) pubkey.event)
=/ meta [pubkey nickname rel]
=/ nfollowing ?~ following (silt ~[meta]) (~(put in u.following) meta)
=. following-graph.state (~(put by follow-graph.state) pubkey.event nfollowing)
`state
--
--
|