forked from coracle/flotilla
Improve claim/access detection
This commit is contained in:
@@ -107,6 +107,7 @@ import {
|
||||
getSetting,
|
||||
userInboxRelays,
|
||||
userGroupSelections,
|
||||
shouldIgnoreError,
|
||||
} from "@app/core/state"
|
||||
import {loadAlertStatuses} from "@app/core/requests"
|
||||
import {platform, platformName, getPushInfo} from "@app/util/push"
|
||||
@@ -288,14 +289,14 @@ export const attemptRelayAccess = async (url: string, claim = "") => {
|
||||
const thunk = publishJoinRequest({url, claim})
|
||||
const error = await waitForThunkError(thunk)
|
||||
|
||||
// Ignore messages about the relay ignoring our messages
|
||||
if (error?.startsWith("mute: ")) return
|
||||
if (shouldIgnoreError(error)) return
|
||||
|
||||
// If it's a strict NIP 29 relay don't worry about requesting access
|
||||
// TODO: remove this if relay29 ever gets less strict
|
||||
if (error?.includes("missing group (`h`) tag")) return
|
||||
if (claim) {
|
||||
const ignoreClaimError =
|
||||
error.includes("invalid invite code size") || error.includes("failed to validate invite code")
|
||||
|
||||
return claim ? error?.replace(/^\w+: /, "") : ""
|
||||
if (!ignoreClaimError) return error?.replace(/^\w+: /, "")
|
||||
}
|
||||
}
|
||||
|
||||
// Deletions
|
||||
|
||||
+9
-10
@@ -961,6 +961,14 @@ export const deriveTimeout = (timeout: number) => {
|
||||
return derived(store, identity)
|
||||
}
|
||||
|
||||
export const shouldIgnoreError = (error: string) => {
|
||||
const isIgnored = error.startsWith("mute: ")
|
||||
const isAborted = error.includes("Signing was aborted")
|
||||
const isStrictNip29Relay = error.includes("missing group (`h`) tag")
|
||||
|
||||
return isIgnored || isAborted || isStrictNip29Relay
|
||||
}
|
||||
|
||||
export const deriveRelayAuthError = (url: string, claim = "") => {
|
||||
const stripPrefix = (m: string) => m.replace(/^\w+: /, "")
|
||||
|
||||
@@ -987,18 +995,9 @@ export const deriveRelayAuthError = (url: string, claim = "") => {
|
||||
const error = getThunkError(thunk)
|
||||
|
||||
if (error) {
|
||||
const isIgnored = error.startsWith("mute: ")
|
||||
const isAborted = error.includes("Signing was aborted")
|
||||
const isEmptyInvite = !claim && error.includes("invite code")
|
||||
const isStrictNip29Relay = error.includes("missing group (`h`) tag")
|
||||
|
||||
if (
|
||||
!isStrictNip29Relay &&
|
||||
!isIgnored &&
|
||||
!isAborted &&
|
||||
!isEmptyInvite &&
|
||||
!isStrictNip29Relay
|
||||
) {
|
||||
if (!shouldIgnoreError(error) && !isEmptyInvite) {
|
||||
return stripPrefix(error) || "join request rejected"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ import {
|
||||
RELAY_ADD_MEMBER,
|
||||
RELAY_REMOVE_MEMBER,
|
||||
isSignedEvent,
|
||||
unionFilters,
|
||||
} from "@welshman/util"
|
||||
import type {Filter, TrustedEvent} from "@welshman/util"
|
||||
import {request, load, pull} from "@welshman/net"
|
||||
@@ -96,7 +97,7 @@ const pullAndListen = ({relays, filters, signal}: PullOpts) => {
|
||||
request({
|
||||
relays,
|
||||
signal,
|
||||
filters: filters.map(assoc("limit", 0)),
|
||||
filters: unionFilters(filters).map(assoc("limit", 0)),
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user