From 8aabb45917bdf1a8d59742e3e5671dde1a284e4b Mon Sep 17 00:00:00 2001 From: artur Date: Mon, 5 Feb 2024 16:01:26 +0300 Subject: [PATCH 1/2] Add name saving to login flow --- .../Modal/ModalLogin/ModalLogin.tsx | 17 +++++++++++++---- src/modules/backend.ts | 19 +++++++++++-------- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/src/components/Modal/ModalLogin/ModalLogin.tsx b/src/components/Modal/ModalLogin/ModalLogin.tsx index 0dcc091..308d69a 100644 --- a/src/components/Modal/ModalLogin/ModalLogin.tsx +++ b/src/components/Modal/ModalLogin/ModalLogin.tsx @@ -53,8 +53,16 @@ export const ModalLogin = () => { const submitHandler = async (values: FormInputType) => { try { let npub = values.username - if (!npub.startsWith('npub1') && !npub.includes('@')) { - npub += '@' + DOMAIN + let name = '' + 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('@')) { const npubNip05 = await fetchNip05(npub) @@ -63,12 +71,13 @@ export const ModalLogin = () => { } const passphrase = values.password - console.log('fetch', npub, passphrase) - const k: any = await swicCall('fetchKey', npub, passphrase) + console.log('fetch', npub, name) + const k: any = await swicCall('fetchKey', npub, passphrase, name) notify(`Fetched ${k.npub}`, 'success') cleanUpStates() navigate(`/key/${k.npub}`) } catch (error: any) { + console.log("error", error); notify(error?.message || 'Something went wrong!', 'error') } } diff --git a/src/modules/backend.ts b/src/modules/backend.ts index ea1ea65..97fb777 100644 --- a/src/modules/backend.ts +++ b/src/modules/backend.ts @@ -521,7 +521,9 @@ export class NoauthBackend { return generatePrivateKey() } - public async addKey(name: string, nsec?: string): Promise { + public async addKey({ name, nsec, existingName } + : { name: string, nsec?: string, existingName?: boolean } + ): Promise { // lowercase name = name.trim().toLocaleLowerCase() @@ -548,9 +550,10 @@ export class NoauthBackend { // assign nip05 before adding the key // FIXME set name to db and if this call to 'send' fails // then retry later - console.log("adding key", npub, name) - if (name) + if (!existingName && name && !name.includes('@')) { + console.log("adding key", npub, name) await this.sendNameToServer(npub, name) + } const sub = await this.swg.registration.pushManager.getSubscription() if (sub) await this.sendSubscriptionToServer(npub, sub) @@ -825,13 +828,13 @@ export class NoauthBackend { } private async generateKey(name: string) { - const k = await this.addKey(name) + const k = await this.addKey({ name }) this.updateUI() return k } private async importKey(name: string, nsec: string) { - const k = await this.addKey(name, nsec) + const k = await this.addKey({ name, nsec }) this.updateUI() return k } @@ -851,7 +854,7 @@ export class NoauthBackend { 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) if (type !== 'npub') throw new Error(`Invalid npub ${npub}`) const { pwh } = await this.keysModule.generatePassKey( @@ -870,7 +873,7 @@ export class NoauthBackend { enckey, passphrase, }) - const k = await this.addKey(nsec) + const k = await this.addKey({ name, nsec, existingName: true }) this.updateUI() return k } @@ -943,7 +946,7 @@ export class NoauthBackend { } else if (method === 'saveKey') { result = await this.saveKey(args[0], args[1]) } 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') { result = await this.confirm(args[0], args[1], args[2], args[3]) } else if (method === 'deleteApp') { From 6c2a12c924434bdb6ba51b3f541464502d10283d Mon Sep 17 00:00:00 2001 From: artur Date: Mon, 5 Feb 2024 16:18:20 +0300 Subject: [PATCH 2/2] Fix updateUI to ensure all action windows are notified --- src/modules/backend.ts | 6 +++++- src/modules/swic.ts | 12 +++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/modules/backend.ts b/src/modules/backend.ts index 97fb777..7c69419 100644 --- a/src/modules/backend.ts +++ b/src/modules/backend.ts @@ -160,10 +160,12 @@ export class NoauthBackend { const self = this swg.addEventListener('activate', (event) => { console.log('activate') +// swg.addEventListener('activate', event => event.waitUntil(swg.clients.claim())); }) swg.addEventListener('install', (event) => { console.log('install') +// swg.addEventListener('install', event => event.waitUntil(swg.skipWaiting())); }) swg.addEventListener('push', (event) => { @@ -972,7 +974,9 @@ export class NoauthBackend { } private async updateUI() { - const clients = await this.swg.clients.matchAll() + const clients = await this.swg.clients.matchAll({ + includeUncontrolled: true + }) console.log('updateUI clients', clients.length) for (const client of clients) { client.postMessage({}) diff --git a/src/modules/swic.ts b/src/modules/swic.ts index 6b429bc..ac5d0a1 100644 --- a/src/modules/swic.ts +++ b/src/modules/swic.ts @@ -17,7 +17,17 @@ export async function swicRegister() { }, }) - navigator.serviceWorker.ready.then((r) => (swr = r)) + navigator.serviceWorker.ready.then((r) => { + console.log("sw ready") + swr = r + if (navigator.serviceWorker.controller) { + console.log( + `This page is currently controlled by: ${navigator.serviceWorker.controller}`, + ); + } else { + console.log("This page is not currently controlled by a service worker."); + } + }) navigator.serviceWorker.addEventListener('message', (event) => { onMessage((event as MessageEvent).data)