Compare commits

...

6 Commits

2 changed files with 36 additions and 10 deletions

View File

@ -130,8 +130,10 @@ export const CreatePage = () => {
}) })
} }
if (userInput.startsWith('npub')) { const input = userInput.toLowerCase()
const pubkey = npubToHex(userInput)
if (input.startsWith('npub')) {
const pubkey = npubToHex(input)
if (pubkey) { if (pubkey) {
addUser(pubkey) addUser(pubkey)
setUserInput('') setUserInput('')
@ -141,12 +143,12 @@ export const CreatePage = () => {
return return
} }
if (userInput.includes('@')) { if (input.includes('@')) {
setIsLoading(true) setIsLoading(true)
setLoadingSpinnerDesc('Querying for nip05') setLoadingSpinnerDesc('Querying for nip05')
const nip05Profile = await queryNip05(userInput) const nip05Profile = await queryNip05(input)
.catch((err) => { .catch((err) => {
console.error(`error occurred in querying nip05: ${userInput}`, err) console.error(`error occurred in querying nip05: ${input}`, err)
return null return null
}) })
.finally(() => { .finally(() => {
@ -390,9 +392,18 @@ export const CreatePage = () => {
)}&key=${encodeURIComponent(encryptionKey)}` )}&key=${encodeURIComponent(encryptionKey)}`
) )
} else { } else {
saveAs(blob, 'request.sigit') if (signers[0] && signers[0].pubkey === usersPubkey) {
setTextToCopy(encryptionKey) // Create a File object with the Blob data
setOpenCopyModel(true) const file = new File([blob], `compressed.sigit`, {
type: 'application/sigit'
})
navigate(appPrivateRoutes.sign, { state: { file, encryptionKey } })
} else {
saveAs(blob, 'request.sigit')
setTextToCopy(encryptionKey)
setOpenCopyModel(true)
}
} }
} }

View File

@ -23,7 +23,7 @@ import { MuiFileInput } from 'mui-file-input'
import { Event, kinds, verifyEvent } from 'nostr-tools' import { Event, kinds, verifyEvent } from 'nostr-tools'
import { useEffect, useState } from 'react' import { useEffect, useState } from 'react'
import { useSelector } from 'react-redux' import { useSelector } from 'react-redux'
import { useNavigate, useSearchParams } from 'react-router-dom' import { useNavigate, useSearchParams, useLocation } from 'react-router-dom'
import { toast } from 'react-toastify' import { toast } from 'react-toastify'
import { LoadingSpinner } from '../../components/LoadingSpinner' import { LoadingSpinner } from '../../components/LoadingSpinner'
import { UserComponent } from '../../components/username' import { UserComponent } from '../../components/username'
@ -69,6 +69,9 @@ enum SignedStatus {
export const SignPage = () => { export const SignPage = () => {
const navigate = useNavigate() const navigate = useNavigate()
const location = useLocation()
const { file, encryptionKey: encKey } = location.state || {}
const [searchParams, setSearchParams] = useSearchParams() const [searchParams, setSearchParams] = useSearchParams()
const [displayInput, setDisplayInput] = useState(false) const [displayInput, setDisplayInput] = useState(false)
@ -217,11 +220,23 @@ export const SignPage = () => {
.finally(() => { .finally(() => {
setIsLoading(false) setIsLoading(false)
}) })
} else if (file && encKey) {
decrypt(file, decodeURIComponent(encKey))
.then((arrayBuffer) => {
if (arrayBuffer) handleDecryptedArrayBuffer(arrayBuffer)
})
.catch((err) => {
console.error(`error occurred in decryption`, err)
toast.error(err.message || `error occurred in decryption`)
})
.finally(() => {
setIsLoading(false)
})
} else { } else {
setIsLoading(false) setIsLoading(false)
setDisplayInput(true) setDisplayInput(true)
} }
}, [searchParams]) }, [searchParams, file, encKey])
const decrypt = async (file: File, key: string) => { const decrypt = async (file: File, key: string) => {
setLoadingSpinnerDesc('Decrypting file') setLoadingSpinnerDesc('Decrypting file')