import { useMutation, useQuery } from "react-query"; import type { MutationOptions } from "@/@types/types/query.types"; import { useAuth } from "@/features/auth/hooks/use-auth"; import { useHttp } from "@/hooks/useHttp"; export interface IProfileInformationResponse { errors: any[]; warnings: any[]; informations: any[]; success: boolean; result: Result; } interface IAddOrUpdateMutationVariables { id: number; userId: number; userDetail: IUserDetail | null; passaportDetail: IPassportDetail | null; phoneNumber: string; status: number; } interface Result { id: number; email: string; userId: number; userDetail: IUserDetail; passaportDetail: IPassportDetail; phoneNumber: string; status: number; userGuidId: string; } interface IPassportDetail { nationality: INationality; citizenNo: string; passportNo: string; passportExpireDate: string; passportNationality: INationality; } interface INationality { id: number | null; name: string; } interface IUserDetail { firstName: string; lastName: string; gender: number; birthDate: string; milesCode?: string; } export const useProfileInformationQuery = ( options?: MutationOptions, ) => { const http = useHttp("wl-display-api"); const { isAuthenticated } = useAuth(); const service = () => !isAuthenticated ? null : http .get("/api/userinformation/getuserinfo") .then((res) => res.data); return useQuery({ queryFn: service, queryKey: "personal-information", ...options, }); }; export const useAddOrUpdateUserMutation = (options?: MutationOptions) => { const http = useHttp("wl-display-api"); const service = (variables: IAddOrUpdateMutationVariables) => http .post("/api/userinformation/addorupdateuserinfo", variables) .then((res) => res.data); return useMutation({ mutationFn: service, mutationKey: "add-or-update-user", ...options, }); };