34 lines
945 B
TypeScript
34 lines
945 B
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"]
|
|
});
|
|
}
|
|
});
|
|
} |