fix nostr auth (#621)

This commit is contained in:
keyan 2023-11-12 11:59:18 -06:00
parent 49e9131cfe
commit 03acce2305
2 changed files with 18 additions and 18 deletions

View File

@ -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 })
} }
})() })()

View File

@ -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 }
}
}
} }
} }
}) })