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` 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, ], );