diff --git a/src/frontend/src/contexts/authContext.tsx b/src/frontend/src/contexts/authContext.tsx index 52beddf9b..3e2af2854 100644 --- a/src/frontend/src/contexts/authContext.tsx +++ b/src/frontend/src/contexts/authContext.tsx @@ -3,6 +3,7 @@ import { LANGFLOW_API_TOKEN, LANGFLOW_AUTO_LOGIN_OPTION, } from "@/constants/constants"; +import { useGetUserData } from "@/controllers/API/queries/auth"; import useAuthStore from "@/stores/authStore"; import useFlowsManagerStore from "@/stores/flowsManagerStore"; import { createContext, useEffect, useState } from "react"; @@ -52,6 +53,8 @@ export function AuthProvider({ children }): React.ReactElement { const setIsLoading = useFlowsManagerStore((state) => state.setIsLoading); const autoLogin = useAuthStore((state) => state.autoLogin); + const { mutate: mutateLoggedUser } = useGetUserData(); + useEffect(() => { const storedAccessToken = cookies.get(LANGFLOW_ACCESS_TOKEN); if (storedAccessToken) { @@ -67,19 +70,23 @@ export function AuthProvider({ children }): React.ReactElement { }, []); function getUser() { - getLoggedUser() - .then(async (user) => { - setUserData(user); - const isSuperUser = user!.is_superuser; - useAuthStore.getState().setIsAdmin(isSuperUser); - getFoldersApi(true, true); - - checkHasStore(); - fetchApiData(); - }) - .catch((error) => { - setLoading(false); - }); + mutateLoggedUser( + {}, + { + onSuccess: async (user) => { + setUserData(user); + const isSuperUser = user!.is_superuser; + useAuthStore.getState().setIsAdmin(isSuperUser); + getFoldersApi(true, true); + checkHasStore(); + fetchApiData(); + }, + onError: () => { + setUserData(null); + setLoading(false); + }, + }, + ); } function login(newAccessToken: string, autoLogin: string) { diff --git a/src/frontend/src/controllers/API/queries/auth/use-get-user.ts b/src/frontend/src/controllers/API/queries/auth/use-get-user.ts index a5d368106..1f5c73ab9 100644 --- a/src/frontend/src/controllers/API/queries/auth/use-get-user.ts +++ b/src/frontend/src/controllers/API/queries/auth/use-get-user.ts @@ -1,20 +1,24 @@ -import { keepPreviousData } from "@tanstack/react-query"; -import { Users, useQueryFunctionType } from "../../../../types/api"; +import { UseMutationResult } from "@tanstack/react-query"; +import { useMutationFunctionType, Users } from "../../../../types/api"; import { api } from "../../api"; import { getURL } from "../../helpers/constants"; import { UseRequestProcessor } from "../../services/request-processor"; -export const useGetUserData: useQueryFunctionType = () => { - const { query } = UseRequestProcessor(); +export const useGetUserData: useMutationFunctionType = ( + options?, +) => { + const { mutate } = UseRequestProcessor(); const getUserData = async () => { const response = await api.get(`${getURL("USERS")}/whoami`); return response["data"]; }; - const queryResult = query(["useGetUserData"], getUserData, { - placeholderData: keepPreviousData, - }); + const mutation: UseMutationResult = mutate( + ["useGetUserData"], + getUserData, + options, + ); - return queryResult; + return mutation; };