HoshiAI-app/api/auth.ts
2026-01-02 15:58:21 +01:00

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"]
});
}
});
}