-
Notifications
You must be signed in to change notification settings - Fork 84
/
main.js
125 lines (117 loc) · 3.14 KB
/
main.js
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
124
125
import {createApp, h} from 'vue'
import {relayConnect} from 'nostr-tools/relay'
import {relays} from './relays'
const App = {
data() {
return {
relays,
status: {}
}
},
mounted() {
this.connections = {}
this.relays.forEach(async url => {
this.status[url] = {}
try {
let conn = relayConnect(
url,
() => {},
() => {
this.status[url].didConnect = false
}
)
this.status[url].didConnect = true
try {
await conn.publish({
id: '41ce9bc50da77dda5542f020370ecc2b056d8f2be93c1cedf1bf57efcab095b0',
pubkey:
'5a462fa6044b4b8da318528a6987a45e3adf832bd1c64bd6910eacfecdf07541',
created_at: 1640305962,
kind: 1,
tags: [],
content: 'running branle',
sig: '08e6303565e9282f32bed41eee4136f45418f366c0ec489ef4f90d13de1b3b9fb45e14c74f926441f8155236fb2f6fef5b48a5c52b19298a0585a2c06afe39ed'
})
this.status[url].didPublish = true
} catch (err) {
this.status[url].didPublish = false
}
let {unsub} = conn.sub(
{
cb: () => {
this.status[url].didQuery = true
unsub()
clearTimeout(willUnsub)
},
filter: {
ids: [
'41ce9bc50da77dda5542f020370ecc2b056d8f2be93c1cedf1bf57efcab095b0'
]
}
},
'nostr-registry'
)
let willUnsub = setTimeout(() => {
unsub()
this.status[url].didQuery = false
}, 3000)
} catch (err) {
this.status[url].didConnect = false
}
})
},
render() {
return h('table', {style: {fontSize: '28px'}}, [
h('tr', [h('th'), h('th', 'connect'), h('th', 'read'), h('th', 'write')]),
...this.relays.map(url =>
h('tr', [
h(
'th',
{
style: {
textAlign: 'right',
whiteSpace: 'pre-wrap',
wordWrap: 'break-word',
wordBreak: 'break-all'
}
},
url
),
...['didConnect', 'didQuery', 'didPublish'].map(attr =>
h(
'td',
{
style: {
fontSize: '50px',
textAlign: 'center',
padding: '5px 35px',
color:
this.status?.[url]?.[attr] === true
? 'green'
: this.status?.[url]?.[attr] === false
? 'red'
: 'silver'
}
},
'•'
)
)
])
),
h('tr', [
h('th', {style: {textAlign: 'right'}}, 'Your relay here:'),
h('th', {colSpan: 3}, [
h(
'a',
{
href: 'https://github.com/fiatjaf/nostr-relay-registry',
style: {color: 'black'}
},
'________________'
)
])
])
])
}
}
createApp(App).mount('#app')