HoshiAI-app/api/auth.ts

37 lines
1.0 KiB
TypeScript

import { setAuthToken } from "@/utils/token-storage"
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"
import { AxiosError } from "axios"
import { get_current_user, post_login } from "./_client"
import { UserResponse } from "./types"
export const useCurrentUser = () => {
return useQuery<UserResponse>({
queryKey: ["current-user"],
queryFn: async () => {
const result = await get_current_user();
return result.user;
},
})
}
interface LoginFuncAttrs {
email: string,
password: string
}
export const useLoginMutation = () => {
const queryClient = useQueryClient();
return useMutation<any, AxiosError, LoginFuncAttrs>({
mutationFn: ({ email, password }: LoginFuncAttrs) => post_login(email, password),
onSuccess: async (data) => {
await setAuthToken(data.access_token);
queryClient.invalidateQueries({
queryKey: ["current-user"]
});
queryClient.invalidateQueries({
queryKey: ["user-tests"]
});
}
});
}