From 1935427c4bff748887b2f3af3c75dd1d1151db9a Mon Sep 17 00:00:00 2001 From: b3hr4d Date: Thu, 4 Apr 2024 15:41:50 +0300 Subject: [PATCH] Add authentication logging and fix useEffect dependency --- packages/core/src/classes/agent/index.ts | 11 ++++++++--- packages/react/src/helpers/authHooks.ts | 6 ++---- .../react/test/__snapshots__/context.spec.tsx.snap | 9 ++++++++- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/packages/core/src/classes/agent/index.ts b/packages/core/src/classes/agent/index.ts index ec507fb51..61fd178e5 100644 --- a/packages/core/src/classes/agent/index.ts +++ b/packages/core/src/classes/agent/index.ts @@ -1,3 +1,4 @@ +/* eslint-disable no-console */ import { HttpAgent } from "@dfinity/agent" import { createStoreWithOptionalDevtools } from "../../utils/helper" import { AuthClient } from "@dfinity/auth-client" @@ -150,12 +151,14 @@ export class AgentManager { } public authenticate = async () => { + console.log( + `Authenticating on ${this.getIsLocal() ? "local" : "ic"} network` + ) this.updateAuthState({ authenticating: true }, "authenticating") try { this._auth = await AuthClient.create() const authenticated = await this._auth.isAuthenticated() - const identity = this._auth.getIdentity() this._agent.replaceIdentity(identity) @@ -195,9 +198,11 @@ export class AgentManager { ? LOCAL_INTERNET_IDENTITY_PROVIDER : IC_INTERNET_IDENTITY_PROVIDER, ...options, + onSuccess: async (msg) => { + await this.authenticate() + options?.onSuccess?.(msg) + }, }) - - await this.authenticate() } public logout = async (options?: { returnTo?: string }) => { diff --git a/packages/react/src/helpers/authHooks.ts b/packages/react/src/helpers/authHooks.ts index 2e875239a..2d960606f 100644 --- a/packages/react/src/helpers/authHooks.ts +++ b/packages/react/src/helpers/authHooks.ts @@ -137,12 +137,10 @@ export const authHooks = (agentManager: AgentManager): AuthHooksReturnType => { ) React.useEffect(() => { - const authClient = getAuth() - - if (!authClient && !authenticating) { + if (!authenticating && !authenticated) { authenticate() } - }, [authenticating]) + }, []) return { authenticated, diff --git a/packages/react/test/__snapshots__/context.spec.tsx.snap b/packages/react/test/__snapshots__/context.spec.tsx.snap index a59e4f6d5..3252a7a47 100644 --- a/packages/react/test/__snapshots__/context.spec.tsx.snap +++ b/packages/react/test/__snapshots__/context.spec.tsx.snap @@ -14,7 +14,14 @@ exports[`createReactor should query 2`] = ` exports[`createReactor should query 3`] = `
- Fetching canister... + + + Ready To call +
`;