79 lines
2.0 KiB
JavaScript
79 lines
2.0 KiB
JavaScript
import { useState, useEffect, useCallback } from "react";
|
|
import AuthRepository from "../repositories/AuthRepository";
|
|
import {
|
|
cacheData,
|
|
cacheProfileData,
|
|
getCachedData,
|
|
getCachedProfileData,
|
|
useSelectedProject,
|
|
} from "../slices/apiDataManager";
|
|
import { useSelector } from "react-redux";
|
|
import eventBus from "../services/eventBus";
|
|
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
|
|
import ProjectRepository from "../repositories/ProjectRepository";
|
|
|
|
let hasFetched = false;
|
|
let hasReceived = false;
|
|
|
|
export const useProfile = () => {
|
|
const loggedUser = useSelector((store) => store.globalVariables.loginUser);
|
|
const queryClient = useQueryClient();
|
|
|
|
const {
|
|
data: profile,
|
|
error,
|
|
isLoading,
|
|
refetch,
|
|
} = useQuery({
|
|
queryKey: ["profile"],
|
|
queryFn: async () => {
|
|
const response = await AuthRepository.profile();
|
|
cacheProfileData(response.data);
|
|
return response.data;
|
|
},
|
|
initialData: loggedUser || undefined,
|
|
enabled: !loggedUser,
|
|
staleTime: 10 * 60 * 1000,
|
|
});
|
|
|
|
const handler = useCallback(() => {
|
|
queryClient.invalidateQueries({ queryKey: ["profile"] });
|
|
}, [queryClient]);
|
|
|
|
useEffect(() => {
|
|
eventBus.on("assign_project_one", handler);
|
|
return () => eventBus.off("assign_project_one", handler);
|
|
}, [handler]);
|
|
|
|
return {
|
|
profile,
|
|
loading: isLoading,
|
|
error,
|
|
refetch,
|
|
};
|
|
};
|
|
|
|
export const useSidBarMenu = () => {
|
|
const userLogged = useSelector((store) => store.globalVariables.loginUser);
|
|
return useQuery({
|
|
queryKey: ["AppMenu"],
|
|
queryFn: async () => await AuthRepository.appmenu(),
|
|
enabled: !!userLogged,
|
|
});
|
|
};
|
|
|
|
export const useAllProjectLevelPermissions = (projectId) => {
|
|
|
|
|
|
return useQuery({
|
|
queryKey: ["AllProjectLevelPermission", projectId],
|
|
queryFn: async () => {
|
|
const resp = await ProjectRepository.getAllProjectLevelPermission(
|
|
projectId
|
|
);
|
|
return resp.data;
|
|
},
|
|
enabled: !!projectId,
|
|
});
|
|
};
|