Add name saving to login flow

This commit is contained in:
artur 2024-02-05 16:01:26 +03:00
parent 5b57b42111
commit 8aabb45917
2 changed files with 24 additions and 12 deletions

View File

@ -53,8 +53,16 @@ export const ModalLogin = () => {
const submitHandler = async (values: FormInputType) => { const submitHandler = async (values: FormInputType) => {
try { try {
let npub = values.username let npub = values.username
if (!npub.startsWith('npub1') && !npub.includes('@')) { let name = ''
npub += '@' + DOMAIN if (!npub.startsWith('npub1')) {
name = npub
if (!npub.includes('@')) {
npub += '@' + DOMAIN
} else {
const nameDomain = npub.split('@')
if (nameDomain[1] === DOMAIN)
name = nameDomain[0];
}
} }
if (npub.includes('@')) { if (npub.includes('@')) {
const npubNip05 = await fetchNip05(npub) const npubNip05 = await fetchNip05(npub)
@ -63,12 +71,13 @@ export const ModalLogin = () => {
} }
const passphrase = values.password const passphrase = values.password
console.log('fetch', npub, passphrase) console.log('fetch', npub, name)
const k: any = await swicCall('fetchKey', npub, passphrase) const k: any = await swicCall('fetchKey', npub, passphrase, name)
notify(`Fetched ${k.npub}`, 'success') notify(`Fetched ${k.npub}`, 'success')
cleanUpStates() cleanUpStates()
navigate(`/key/${k.npub}`) navigate(`/key/${k.npub}`)
} catch (error: any) { } catch (error: any) {
console.log("error", error);
notify(error?.message || 'Something went wrong!', 'error') notify(error?.message || 'Something went wrong!', 'error')
} }
} }

View File

@ -521,7 +521,9 @@ export class NoauthBackend {
return generatePrivateKey() return generatePrivateKey()
} }
public async addKey(name: string, nsec?: string): Promise<KeyInfo> { public async addKey({ name, nsec, existingName }
: { name: string, nsec?: string, existingName?: boolean }
): Promise<KeyInfo> {
// lowercase // lowercase
name = name.trim().toLocaleLowerCase() name = name.trim().toLocaleLowerCase()
@ -548,9 +550,10 @@ export class NoauthBackend {
// assign nip05 before adding the key // assign nip05 before adding the key
// FIXME set name to db and if this call to 'send' fails // FIXME set name to db and if this call to 'send' fails
// then retry later // then retry later
console.log("adding key", npub, name) if (!existingName && name && !name.includes('@')) {
if (name) console.log("adding key", npub, name)
await this.sendNameToServer(npub, name) await this.sendNameToServer(npub, name)
}
const sub = await this.swg.registration.pushManager.getSubscription() const sub = await this.swg.registration.pushManager.getSubscription()
if (sub) await this.sendSubscriptionToServer(npub, sub) if (sub) await this.sendSubscriptionToServer(npub, sub)
@ -825,13 +828,13 @@ export class NoauthBackend {
} }
private async generateKey(name: string) { private async generateKey(name: string) {
const k = await this.addKey(name) const k = await this.addKey({ name })
this.updateUI() this.updateUI()
return k return k
} }
private async importKey(name: string, nsec: string) { private async importKey(name: string, nsec: string) {
const k = await this.addKey(name, nsec) const k = await this.addKey({ name, nsec })
this.updateUI() this.updateUI()
return k return k
} }
@ -851,7 +854,7 @@ export class NoauthBackend {
await this.sendKeyToServer(npub, enckey, pwh) await this.sendKeyToServer(npub, enckey, pwh)
} }
private async fetchKey(npub: string, passphrase: string) { private async fetchKey(npub: string, passphrase: string, name: string) {
const { type, data: pubkey } = nip19.decode(npub) const { type, data: pubkey } = nip19.decode(npub)
if (type !== 'npub') throw new Error(`Invalid npub ${npub}`) if (type !== 'npub') throw new Error(`Invalid npub ${npub}`)
const { pwh } = await this.keysModule.generatePassKey( const { pwh } = await this.keysModule.generatePassKey(
@ -870,7 +873,7 @@ export class NoauthBackend {
enckey, enckey,
passphrase, passphrase,
}) })
const k = await this.addKey(nsec) const k = await this.addKey({ name, nsec, existingName: true })
this.updateUI() this.updateUI()
return k return k
} }
@ -943,7 +946,7 @@ export class NoauthBackend {
} else if (method === 'saveKey') { } else if (method === 'saveKey') {
result = await this.saveKey(args[0], args[1]) result = await this.saveKey(args[0], args[1])
} else if (method === 'fetchKey') { } else if (method === 'fetchKey') {
result = await this.fetchKey(args[0], args[1]) result = await this.fetchKey(args[0], args[1], args[2])
} else if (method === 'confirm') { } else if (method === 'confirm') {
result = await this.confirm(args[0], args[1], args[2], args[3]) result = await this.confirm(args[0], args[1], args[2], args[3])
} else if (method === 'deleteApp') { } else if (method === 'deleteApp') {