Fix #202 slow-network invite timeout handling

This commit is contained in:
2026-04-15 22:36:55 +05:30
committed by hodlbod
parent 4cc1cc95ca
commit cced917abc
+21 -14
View File
@@ -25,34 +25,41 @@
const authError = deriveRelayAuthError(url)
const back = () => history.back()
const copyInvite = () => clip(invite)
let claim = $state("")
let loading = $state(true)
let invite = $state("")
$effect(() => {
const relay = displayRelayUrl(url)
const params = new URLSearchParams({r: relay, c: claim}).toString()
invite = PLATFORM_URL + "/join?" + params
})
onMount(async () => {
const [[event]] = await Promise.all([
request({
relays: [url],
autoClose: true,
signal: AbortSignal.timeout(3000),
filters: [{kinds: [RELAY_INVITE]}],
}),
sleep(2000),
])
try {
const [[event]] = await Promise.all([
Promise.race([
request({
relays: [url],
autoClose: true,
signal: AbortSignal.timeout(10000),
filters: [{kinds: [RELAY_INVITE]}],
}),
sleep(10000).then(() => {
throw new Error("Invite claim timed out")
}),
]),
sleep(2000),
])
claim = getTagValue("claim", event?.tags || []) || ""
loading = false
claim = getTagValue("claim", event?.tags || []) || ""
} catch {
claim = ""
} finally {
loading = false
}
})
</script>