From efb0528f76071f441f803baa699656bd406019b8 Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Tue, 3 Dec 2024 16:18:36 -0800 Subject: [PATCH] Speed up initial login --- src/app/commands.ts | 19 ++++++++++++------- src/app/components/LogIn.svelte | 23 +++++++++++------------ src/app/components/LogInBunker.svelte | 12 ++++++------ src/app/components/LogInPassword.svelte | 9 ++++++--- src/app/components/SignUp.svelte | 6 +++--- 5 files changed, 38 insertions(+), 31 deletions(-) diff --git a/src/app/commands.ts b/src/app/commands.ts index 09bb8042..928f92fe 100644 --- a/src/app/commands.ts +++ b/src/app/commands.ts @@ -140,6 +140,8 @@ export const loginWithNip46 = async ({ if (!pubkey) return false + await loadUserData(pubkey) + const handler = {relays, pubkey: signerPubkey} addSession({method: "nip46", pubkey, secret: clientSecret, handler}) @@ -153,13 +155,16 @@ export const loadUserData = ( pubkey: string, request: Partial = {}, ) => { - const promise = Promise.all([ - loadInboxRelaySelections(pubkey, request), - loadMembership(pubkey, request), - loadSettings(pubkey, request), - loadProfile(pubkey, request), - loadFollows(pubkey, request), - loadMutes(pubkey, request), + const promise = Promise.race([ + sleep(3000), + Promise.all([ + loadInboxRelaySelections(pubkey, request), + loadMembership(pubkey, request), + loadSettings(pubkey, request), + loadProfile(pubkey, request), + loadFollows(pubkey, request), + loadMutes(pubkey, request), + ]), ]) // Load followed profiles slowly in the background without clogging other stuff up diff --git a/src/app/components/LogIn.svelte b/src/app/components/LogIn.svelte index 05fdeb64..a2095ab0 100644 --- a/src/app/components/LogIn.svelte +++ b/src/app/components/LogIn.svelte @@ -20,28 +20,27 @@ const signUp = () => pushModal(SignUp) const withLoading = - (cb: (...args: any[]) => any) => + (s: string, cb: (...args: any[]) => any) => async (...args: any[]) => { - loading = true + loading = s try { await cb(...args) } finally { - loading = false + loading = undefined } } const onSuccess = async (session: Session, relays: string[] = []) => { - addSession(session) - await loadUserData(session.pubkey, {relays}) + addSession(session) pushToast({message: "Successfully logged in!"}) setChecked("*") clearModals() } - const loginWithNip07 = withLoading(async () => { + const loginWithNip07 = withLoading("nip07", async () => { const pubkey = await getNip07()?.getPublicKey() if (pubkey) { @@ -54,7 +53,7 @@ } }) - const loginWithSigner = withLoading(async (app: any) => { + const loginWithNip55 = withLoading("nip55", async (app: any) => { const signer = new Nip55Signer(app.packageName) const pubkey = await signer.getPubkey() @@ -72,8 +71,8 @@ const loginWithBunker = () => pushModal(LogInBunker) - let loading = false let signers: any[] = [] + let loading: string | undefined let hasNativeSigner = Boolean(getNip07()) onMount(async () => { @@ -96,7 +95,7 @@

{#if BURROW_URL}