mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-06 16:03:52 +00:00
35 lines
1.1 KiB
TypeScript
35 lines
1.1 KiB
TypeScript
import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
|
|
|
|
import { queryRefetchIntervalSlow } from '../../ontimeConfig';
|
|
import { PROJECT_DATA } from '../api/constants';
|
|
import { getProjectData, postProjectData } from '../api/project';
|
|
import { projectDataPlaceholder } from '../models/ProjectData';
|
|
|
|
export default function useProjectData() {
|
|
const { data, status, isFetching, isError, refetch } = useQuery({
|
|
queryKey: PROJECT_DATA,
|
|
queryFn: getProjectData,
|
|
placeholderData: (previousData, _previousQuery) => previousData,
|
|
refetchInterval: queryRefetchIntervalSlow,
|
|
});
|
|
|
|
return { data: data ?? projectDataPlaceholder, status, isFetching, isError, refetch };
|
|
}
|
|
|
|
export function useUpdateProjectData() {
|
|
const queryClient = useQueryClient();
|
|
|
|
const updateFn = useMutation({
|
|
mutationFn: postProjectData,
|
|
onSuccess: (newProjectData) => {
|
|
queryClient.setQueryData(PROJECT_DATA, newProjectData);
|
|
},
|
|
});
|
|
|
|
return {
|
|
updateProjectData: updateFn.mutateAsync,
|
|
isMutating: updateFn.isPending,
|
|
isMutatingError: updateFn.isError,
|
|
};
|
|
}
|