//------------------------------ MODULE --------------------------------
import { useQueryClient, useQuery } from '@tanstack/react-query';
import { apiCall } from '@/lib';
//----------------------------- FUNCTION -------------------------------
export default function useUser(errorCallback = () => {}){
//init
const queryClient = useQueryClient();
const queryKey = 'user';
const queryUrl = '/user/me';
const headers = {"Authorization" : "access"};
//query
const userData = useQuery(
[queryKey],
() => apiCall.get(queryUrl, {headers}).then(( res ) => {
if(res.data.result == "000") return res.data.data;
else {
errorCallback();
console.log(`-------${queryKey}--------`);
console.log(res.data.result);
return null;
}
}),
);
//function
const update = () => queryClient.invalidateQueries([queryKey]);
//return
return [userData.data, update];
}
//------------------------------ MODULE --------------------------------
import { useQueryClient, useMutation } from '@tanstack/react-query';
import { apiCall } from '@/lib';
//----------------------------- FUNCTION -------------------------------
export default function useUserMutate(){
//init
const queryClient = useQueryClient();
const queryKey = 'user';
const queryUrl = '/user';
const headers = {"Authorization" : "access"};
//query
const mutation = useMutation({
mutationFn : ({ type=null, params={} }) => {
if(type == "add") return apiCall.put(queryUrl, {...params});
if(type == "modify") return apiCall.post(`${queryUrl}/me`, {...params}, {headers});
if(type == "remove") return apiCall.delete(`${queryUrl}/me`, {headers});
},
onSuccess: (res) => {
if(res.data.result == "000"){
queryClient.invalidateQueries({ queryKey: [queryKey] }); // Invalidate and refetch
}else{
console.log(`-------${queryKey}--------`);
console.log(res.data.result);
}
}
})
//return
return mutation;
}