|
27 | 27 | import OperatorRelay from "$lib/components/partials/OperatorRelay.svelte";
|
28 | 28 | import { doLiveSync } from "$stores/app";
|
29 | 29 |
|
30 |
| - // export let params: { protocol: string; relay: string }; |
31 |
| -
|
32 |
| - $: pathname = $page.url |
33 |
| -
|
34 |
| - let currentRelay: string = ''; |
35 |
| - let loading: boolean = true; |
36 |
| -
|
37 |
| - const relayUrl = generateRelayUrlFromPath() as string; |
38 |
| -
|
39 |
| - // const nip11Ready: Writable<boolean> = writable(false); |
40 |
| - // const operatorMetaReady: Writable<boolean> = writable(false); |
41 |
| - // const monitors: Writable<Monitor[]> = writable([]); |
42 |
| -
|
43 |
| - // const liveness: Writable<null | 'online' | 'offline' | 'dead' | 'unknown'> = writable(null); |
44 |
| - // const oldChecks: Writable<Nip66CheckEvent[]> = writable([]); |
45 |
| -
|
46 |
| - // const nocapService: Writable<NocapService> = writable(new NocapService()); |
47 |
| -
|
48 |
| - // const deduplicateEvents = ( events: NostrEvent[] ) => { |
49 |
| - // const deduped = new Map(); |
50 |
| - // events.forEach( event => { |
51 |
| - // const key = eventKey(event); |
52 |
| - // deduped.set(key, event); |
53 |
| - // }); |
54 |
| - // return Array.from(deduped.values()); |
55 |
| - // } |
56 |
| -
|
| 30 | + import {nip11ValidationErrorCount} from "$stores/nip11-validations"; |
| 31 | +
|
| 32 | + $: pathname = $page.url |
| 33 | +
|
| 34 | + let currentRelay: string = ''; |
| 35 | + let loading: boolean = true; |
| 36 | +
|
| 37 | + const relayUrl = generateRelayUrlFromPath() as string; |
| 38 | +
|
| 39 | + // const nip11Ready: Writable<boolean> = writable(false); |
| 40 | + // const operatorMetaReady: Writable<boolean> = writable(false); |
| 41 | + // const monitors: Writable<Monitor[]> = writable([]); |
| 42 | +
|
| 43 | + // const liveness: Writable<null | 'online' | 'offline' | 'dead' | 'unknown'> = writable(null); |
| 44 | + // const oldChecks: Writable<Nip66CheckEvent[]> = writable([]); |
| 45 | +
|
| 46 | + // const nocapService: Writable<NocapService> = writable(new NocapService()); |
| 47 | +
|
| 48 | + // const deduplicateEvents = ( events: NostrEvent[] ) => { |
| 49 | + // const deduped = new Map(); |
| 50 | + // events.forEach( event => { |
| 51 | + // const key = eventKey(event); |
| 52 | + // deduped.set(key, event); |
| 53 | + // }); |
| 54 | + // return Array.from(deduped.values()); |
| 55 | + // } |
| 56 | +
|
| 57 | + |
| 58 | + // const relayChecks: Readable<Nip66CheckEvent[]> = derived([oldChecks, relayCheckAggregates], ([$oldChecks]) => { |
| 59 | + // const checks = relayLivenessChecks(relayUrl) |
| 60 | + // if($oldChecks.length) { |
| 61 | + // return deduplicateEvents([...$oldChecks, ...checks]); |
| 62 | + // } |
| 63 | + // return relayLivenessChecks(relayUrl); |
| 64 | + // }) |
| 65 | + let relayAggregate: Readable<any | undefined> = readable(undefined) |
| 66 | + let nip11: Readable<Nip11 | undefined> = readable(undefined); |
| 67 | + let operatorPubkey: Readable<string | undefined> = readable(undefined); |
| 68 | + let operatorProfile: Readable<PubkeyProfile | undefined> = readable(undefined); |
| 69 | + let operatorRelays: Readable<string[] | undefined> = readable(undefined); |
| 70 | +
|
| 71 | + const sidebarNavItems = derived(nip11ValidationErrorCount, $nip11ValidationErrorCount => { |
| 72 | + return [ |
| 73 | + { |
| 74 | + title: "Overview", |
| 75 | + href: `/relays/${generateRelayPathFromUrl(relayUrl)}`, |
| 76 | + }, |
| 77 | + { |
| 78 | + title: "Insights", |
| 79 | + href: `/relays/${generateRelayPathFromUrl(relayUrl)}/insights`, |
| 80 | + }, |
| 81 | + { |
| 82 | + title: "Operator", |
| 83 | + href: `/relays/${generateRelayPathFromUrl(relayUrl)}/operator`, |
| 84 | + }, |
| 85 | + { |
| 86 | + title: "Feed", |
| 87 | + href: `/relays/${generateRelayPathFromUrl(relayUrl)}/feed`, |
| 88 | + }, |
| 89 | + { |
| 90 | + title: "Checks", |
| 91 | + href: `/relays/${generateRelayPathFromUrl(relayUrl)}/checks` |
| 92 | + }, |
| 93 | + { |
| 94 | + title: "NIP-11", |
| 95 | + href: `/relays/${generateRelayPathFromUrl(relayUrl)}/nip-11`, |
| 96 | + errorCount: $nip11ValidationErrorCount.get(relayUrl) |
| 97 | + }, |
| 98 | + { |
| 99 | + title: "Audits", |
| 100 | + href: `/relays/${generateRelayPathFromUrl(relayUrl)}/audits` |
| 101 | + }, |
| 102 | + ]; |
| 103 | + }); |
| 104 | +
|
| 105 | + let hasSynced = false; |
| 106 | +
|
| 107 | + const sync = async () => { |
| 108 | + if(hasSynced) return; |
| 109 | + await $route66?.ready(); |
| 110 | + await $dataRegister.require( |
| 111 | + [ |
| 112 | + 'sync:cache', |
| 113 | + 'sync:relay:checks', |
| 114 | + 'sync:relay:nip11', |
| 115 | + 'sync:relay:operator', |
| 116 | + 'sync:relay:live' |
| 117 | + ], |
| 118 | + { |
| 119 | + 'sync:relay:checks': [ relayUrl ], |
| 120 | + 'sync:relay:nip11': [ relayUrl ], |
| 121 | + 'sync:relay:operator': [ relayUrl ], |
| 122 | + 'sync:relay:live': [ relayUrl ] |
| 123 | + } |
| 124 | + ); |
| 125 | + hasSynced = true; |
| 126 | + } |
| 127 | +
|
| 128 | + const mount = () => { |
| 129 | + doLiveSync.set(false); |
| 130 | + if (currentRelay === relayUrl) return; |
57 | 131 |
|
58 |
| - // const relayChecks: Readable<Nip66CheckEvent[]> = derived([oldChecks, relayCheckAggregates], ([$oldChecks]) => { |
59 |
| - // const checks = relayLivenessChecks(relayUrl) |
60 |
| - // if($oldChecks.length) { |
61 |
| - // return deduplicateEvents([...$oldChecks, ...checks]); |
62 |
| - // } |
63 |
| - // return relayLivenessChecks(relayUrl); |
64 |
| - // }) |
65 |
| - let relayAggregate: Readable<any | undefined> = readable(undefined) |
66 |
| - let nip11: Readable<Nip11 | undefined> = readable(undefined); |
67 |
| - let operatorPubkey: Readable<string | undefined> = readable(undefined); |
68 |
| - let operatorProfile: Readable<PubkeyProfile | undefined> = readable(undefined); |
69 |
| - let operatorRelays: Readable<string[] | undefined> = readable(undefined); |
70 |
| -
|
71 |
| - const sidebarNavItems = [ |
72 |
| - { |
73 |
| - title: "Overview", |
74 |
| - href: `/relays/${generateRelayPathFromUrl(relayUrl)}`, |
75 |
| - }, |
76 |
| - { |
77 |
| - title: "Insights", |
78 |
| - href: `/relays/${generateRelayPathFromUrl(relayUrl)}/insights`, |
79 |
| - }, |
80 |
| - { |
81 |
| - title: "Operator", |
82 |
| - href: `/relays/${generateRelayPathFromUrl(relayUrl)}/operator`, |
83 |
| - }, |
84 |
| - { |
85 |
| - title: "Feed", |
86 |
| - href: `/relays/${generateRelayPathFromUrl(relayUrl)}/feed`, |
87 |
| - }, |
88 |
| - { |
89 |
| - title: "Checks", |
90 |
| - href: `/relays/${generateRelayPathFromUrl(relayUrl)}/checks`, |
91 |
| - }, |
92 |
| - { |
93 |
| - title: "NIP-11", |
94 |
| - href: `/relays/${generateRelayPathFromUrl(relayUrl)}/nip-11`, |
95 |
| - }, |
96 |
| - { |
97 |
| - title: "Audits", |
98 |
| - href: `/relays/${generateRelayPathFromUrl(relayUrl)}/audits` |
99 |
| - }, |
100 |
| - ]; |
101 |
| -
|
102 |
| - let hasSynced = false; |
103 |
| -
|
104 |
| - const sync = async () => { |
105 |
| - if(hasSynced) return; |
106 |
| - await $route66?.ready(); |
107 |
| - await $dataRegister.require( |
108 |
| - [ |
109 |
| - 'sync:cache', |
110 |
| - 'sync:relay:checks', |
111 |
| - 'sync:relay:nip11', |
112 |
| - 'sync:relay:operator', |
113 |
| - 'sync:relay:live' |
114 |
| - ], |
115 |
| - { |
116 |
| - 'sync:relay:checks': [ relayUrl ], |
117 |
| - 'sync:relay:nip11': [ relayUrl ], |
118 |
| - 'sync:relay:operator': [ relayUrl ], |
119 |
| - 'sync:relay:live': [ relayUrl ] |
120 |
| - } |
121 |
| - ); |
122 |
| - hasSynced = true; |
123 |
| - } |
124 |
| -
|
125 |
| - const mount = () => { |
126 |
| - doLiveSync.set(false); |
127 |
| - if (currentRelay === relayUrl) return; |
128 |
| - |
129 |
| - let resume: LiveSyncResumer; |
130 |
| - pauseLiveSync().then( (r) => resume = r); |
131 |
| - sync().then( () => { |
132 |
| - nip11 = relayNip11$(relayUrl); |
133 |
| - operatorPubkey = relayOperatorPubkey$(relayUrl); |
134 |
| - if($operatorPubkey) { |
135 |
| - operatorProfile = operatorProfile$($operatorPubkey); |
136 |
| - operatorRelays = operatorRelays$($operatorPubkey); |
137 |
| - } |
138 |
| - relayAggregate = relayLivenessAggregate$(relayUrl); |
139 |
| - loading = false |
140 |
| - }) |
141 |
| - return () => { |
142 |
| - stopRelayLiveSync(); |
143 |
| - resume(); |
| 132 | + let resume: LiveSyncResumer; |
| 133 | + pauseLiveSync().then( (r) => resume = r); |
| 134 | + sync().then( () => { |
| 135 | + nip11 = relayNip11$(relayUrl); |
| 136 | + operatorPubkey = relayOperatorPubkey$(relayUrl); |
| 137 | + if($operatorPubkey) { |
| 138 | + operatorProfile = operatorProfile$($operatorPubkey); |
| 139 | + operatorRelays = operatorRelays$($operatorPubkey); |
144 | 140 | }
|
145 |
| - }; |
146 |
| -
|
147 |
| - relayNip11$ |
148 |
| -
|
149 |
| - const destroy = () => { |
150 |
| - if (currentRelay === relayUrl) return; |
151 |
| - loading = true; |
152 |
| - doLiveSync.set(true); |
153 |
| - // currentRelay = ''; |
154 |
| - // monitors.set([]); |
155 |
| - // nip11Ready.set(false); |
156 |
| - // operatorMetaReady.set(false); |
157 |
| - // liveness.set(null); |
| 141 | + relayAggregate = relayLivenessAggregate$(relayUrl); |
| 142 | + loading = false |
| 143 | + }) |
| 144 | + return () => { |
| 145 | + stopRelayLiveSync(); |
| 146 | + resume(); |
| 147 | + } |
158 | 148 | };
|
159 | 149 |
|
160 |
| - onMount(mount); |
161 |
| - onDestroy(destroy); |
| 150 | + relayNip11$ |
162 | 151 |
|
163 |
| - $: description = $nip11?.description || null; |
164 |
| - $: banner = $nip11?.banner || null; |
165 |
| - $: icon = $nip11?.icon || null;4 |
166 |
| -
|
167 |
| - // $: relayData = { |
168 |
| - // url: relayUrl, |
169 |
| - // operator: { |
170 |
| - // pubkey: $operatorPubkey, |
171 |
| - // profile: $operatorProfile, |
172 |
| - // relays: $operatorRelays |
173 |
| - // } |
174 |
| - // } |
175 |
| -
|
176 |
| - // setContext('relayUrl', relayUrl); |
| 152 | + const destroy = () => { |
| 153 | + if (currentRelay === relayUrl) return; |
| 154 | + loading = true; |
| 155 | + doLiveSync.set(true); |
| 156 | + // currentRelay = ''; |
| 157 | + // monitors.set([]); |
| 158 | + // nip11Ready.set(false); |
| 159 | + // operatorMetaReady.set(false); |
| 160 | + // liveness.set(null); |
| 161 | + }; |
| 162 | +
|
| 163 | + onMount(mount); |
| 164 | + onDestroy(destroy); |
| 165 | +
|
| 166 | + $: description = $nip11?.description || null; |
| 167 | + $: banner = $nip11?.banner || null; |
| 168 | + $: icon = $nip11?.icon || null;4 |
| 169 | +
|
| 170 | + // $: relayData = { |
| 171 | + // url: relayUrl, |
| 172 | + // operator: { |
| 173 | + // pubkey: $operatorPubkey, |
| 174 | + // profile: $operatorProfile, |
| 175 | + // relays: $operatorRelays |
| 176 | + // } |
| 177 | + // } |
| 178 | +
|
| 179 | + // setContext('relayUrl', relayUrl); |
177 | 180 | </script>
|
178 | 181 |
|
179 | 182 | <PageHeader
|
|
0 commit comments