fix nostr auth (#621)
This commit is contained in:
parent
49e9131cfe
commit
03acce2305
@ -69,25 +69,25 @@ export function NostrAuth ({ text, callbackUrl }) {
|
|||||||
createAuth {
|
createAuth {
|
||||||
k1
|
k1
|
||||||
}
|
}
|
||||||
}`)
|
}`, {
|
||||||
|
// don't cache this mutation
|
||||||
|
fetchPolicy: 'no-cache'
|
||||||
|
})
|
||||||
const [hasExtension, setHasExtension] = useState(undefined)
|
const [hasExtension, setHasExtension] = useState(undefined)
|
||||||
const [extensionError, setExtensionError] = useState(null)
|
const [extensionError, setExtensionError] = useState(null)
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
createAuth()
|
createAuth()
|
||||||
|
setHasExtension(!!window.nostr)
|
||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
const k1 = data?.createAuth.k1
|
const k1 = data?.createAuth.k1
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!k1) return
|
if (!k1 || !hasExtension) return
|
||||||
setHasExtension(!!window.nostr)
|
|
||||||
if (!window.nostr) {
|
|
||||||
const err = { message: 'nostr extension not found' }
|
|
||||||
console.error(err.message)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
console.info('nostr extension detected')
|
console.info('nostr extension detected')
|
||||||
|
|
||||||
let mounted = true;
|
let mounted = true;
|
||||||
(async function () {
|
(async function () {
|
||||||
try {
|
try {
|
||||||
@ -102,29 +102,23 @@ export function NostrAuth ({ text, callbackUrl }) {
|
|||||||
})
|
})
|
||||||
if (!event) throw new Error('extension returned empty event')
|
if (!event) throw new Error('extension returned empty event')
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (e.message === 'window.nostr call already executing') return
|
if (e.message === 'window.nostr call already executing' || !mounted) return
|
||||||
setExtensionError({ message: 'nostr extension failed to sign event', details: e.message })
|
setExtensionError({ message: 'nostr extension failed to sign event', details: e.message })
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// sign them in
|
// sign them in
|
||||||
try {
|
try {
|
||||||
const { error, ok } = await signIn('nostr', {
|
await signIn('nostr', {
|
||||||
event: JSON.stringify(event),
|
event: JSON.stringify(event),
|
||||||
callbackUrl
|
callbackUrl
|
||||||
})
|
})
|
||||||
|
|
||||||
if (error) {
|
|
||||||
throw new Error(error)
|
|
||||||
}
|
|
||||||
if (!ok) {
|
|
||||||
throw new Error('auth failed')
|
|
||||||
}
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
throw new Error('authorization failed', e)
|
throw new Error('authorization failed', e)
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (!mounted) return
|
if (!mounted) return
|
||||||
|
console.log('nostr auth error', e)
|
||||||
setExtensionError({ message: `${text} failed`, details: e.message })
|
setExtensionError({ message: `${text} failed`, details: e.message })
|
||||||
}
|
}
|
||||||
})()
|
})()
|
||||||
|
@ -525,7 +525,13 @@ function AuthMethods ({ methods }) {
|
|||||||
id: 'ROOT_QUERY',
|
id: 'ROOT_QUERY',
|
||||||
fields: {
|
fields: {
|
||||||
settings (existing) {
|
settings (existing) {
|
||||||
return { ...existing, authMethods: { ...unlinkAuth } }
|
return {
|
||||||
|
...existing,
|
||||||
|
privates: {
|
||||||
|
...existing.privates,
|
||||||
|
authMethods: { ...unlinkAuth }
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user