From 4aa3e4ce4b6d0b1eb6a87e3a4c0cb4b8773afb58 Mon Sep 17 00:00:00 2001 From: Brion Date: Sat, 10 Jan 2026 15:21:44 +0530 Subject: [PATCH 1/2] Fix render loops due to `bind` --- .../contexts/Asgardeo/AsgardeoProvider.tsx | 84 +++++++++++++++++-- 1 file changed, 75 insertions(+), 9 deletions(-) diff --git a/packages/react/src/contexts/Asgardeo/AsgardeoProvider.tsx b/packages/react/src/contexts/Asgardeo/AsgardeoProvider.tsx index 570f4fa8e..797ea1914 100644 --- a/packages/react/src/contexts/Asgardeo/AsgardeoProvider.tsx +++ b/packages/react/src/contexts/Asgardeo/AsgardeoProvider.tsx @@ -493,6 +493,63 @@ const AsgardeoProvider: FC> = ({ })); }; + const getDecodedIdToken = useCallback(async (): Promise => { + return await asgardeo.getDecodedIdToken(); + }, [asgardeo]); + + const getAccessToken = useCallback(async (): Promise => { + return await asgardeo.getAccessToken(); + }, [asgardeo]); + + const request = useCallback( + async (...args: any[]): Promise => { + return await asgardeo.request(...args); + }, + [asgardeo], + ); + + const requestAll = useCallback( + async (...args: any[]): Promise => { + return await asgardeo.requestAll(...args); + }, + [asgardeo], + ); + + const exchangeToken = useCallback( + async (config: any, sessionId?: string): Promise => { + return await asgardeo.exchangeToken(config, sessionId); + }, + [asgardeo], + ); + + const signOut = useCallback( + async (...args: any[]): Promise => { + return await asgardeo.signOut(...args); + }, + [asgardeo], + ); + + const signUp = useCallback( + async (...args: any[]): Promise => { + return await asgardeo.signUp(...args); + }, + [asgardeo], + ); + + const clearSession = useCallback( + async (...args: any[]): Promise => { + return await asgardeo.clearSession(...args); + }, + [asgardeo], + ); + + const reInitialize = useCallback( + async (config: any): Promise => { + return await asgardeo.reInitialize(config); + }, + [asgardeo], + ); + const value = useMemo( () => ({ applicationId, @@ -501,25 +558,25 @@ const AsgardeoProvider: FC> = ({ signUpUrl, afterSignInUrl, baseUrl, - clearSession: asgardeo.clearSession.bind(asgardeo), - getAccessToken: asgardeo.getAccessToken.bind(asgardeo), + clearSession, + getAccessToken, isInitialized: isInitializedSync, isLoading: isLoadingSync, isSignedIn: isSignedInSync, organization: currentOrganization, signIn, signInSilently, - signOut: asgardeo.signOut.bind(asgardeo), - signUp: asgardeo.signUp.bind(asgardeo), + signOut, + signUp, user, http: { - request: asgardeo.request.bind(asgardeo), - requestAll: asgardeo.requestAll.bind(asgardeo), + request, + requestAll, }, - reInitialize: asgardeo.reInitialize.bind(asgardeo), + reInitialize, signInOptions, - getDecodedIdToken: asgardeo.getDecodedIdToken.bind(asgardeo), - exchangeToken: asgardeo.exchangeToken.bind(asgardeo), + getDecodedIdToken, + exchangeToken, syncSession, platform: config?.platform, switchOrganization, @@ -542,6 +599,15 @@ const AsgardeoProvider: FC> = ({ signInOptions, syncSession, switchOrganization, + getDecodedIdToken, + getAccessToken, + request, + requestAll, + exchangeToken, + signOut, + signUp, + clearSession, + reInitialize, ], ); From 4329d943c0f82e7ec4aedca55c157825cd4fa20c Mon Sep 17 00:00:00 2001 From: Brion Date: Sat, 10 Jan 2026 15:22:45 +0530 Subject: [PATCH 2/2] =?UTF-8?q?Add=20changeset=20=F0=9F=A6=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changeset/clean-squids-accept.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/clean-squids-accept.md diff --git a/.changeset/clean-squids-accept.md b/.changeset/clean-squids-accept.md new file mode 100644 index 000000000..20f955b05 --- /dev/null +++ b/.changeset/clean-squids-accept.md @@ -0,0 +1,5 @@ +--- +'@asgardeo/react': patch +--- + +Fix render loops due to `bind`