mirror of
https://github.com/ershisan99/todolist_next.git
synced 2026-02-01 21:02:06 +00:00
refactor
This commit is contained in:
82
src/services/todolists/todolists.hooks.ts
Normal file
82
src/services/todolists/todolists.hooks.ts
Normal file
@@ -0,0 +1,82 @@
|
||||
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
|
||||
|
||||
import { QUERY_KEYS } from "@/constants";
|
||||
import { noRefetch } from "@/helpers";
|
||||
import { TodolistAPI } from "@/services";
|
||||
|
||||
export const useTodolistsQuery = () => {
|
||||
return useQuery({
|
||||
queryFn: TodolistAPI.getTodolists,
|
||||
queryKey: [QUERY_KEYS.TODOLISTS],
|
||||
...noRefetch,
|
||||
});
|
||||
};
|
||||
|
||||
export const useCreateTodolistMutation = () => {
|
||||
const queryClient = useQueryClient();
|
||||
|
||||
return useMutation({
|
||||
mutationFn: TodolistAPI.createTodolist,
|
||||
//todo: add onMutate
|
||||
onSuccess: async () => {
|
||||
await queryClient.invalidateQueries([QUERY_KEYS.TODOLISTS]);
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
export const useDeleteTodolistMutation = () => {
|
||||
const queryClient = useQueryClient();
|
||||
|
||||
return useMutation({
|
||||
mutationFn: TodolistAPI.deleteTodolist,
|
||||
onSuccess: () => {
|
||||
queryClient.invalidateQueries([QUERY_KEYS.TODOLISTS]);
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
export const useGetTasksQuery = (todolistId: string) => {
|
||||
return useQuery({
|
||||
queryKey: [QUERY_KEYS.TASKS, todolistId],
|
||||
queryFn: () => TodolistAPI.getTodolistTasks({ todolistId }),
|
||||
});
|
||||
};
|
||||
|
||||
export const useCreateTaskMutation = () => {
|
||||
const queryClient = useQueryClient();
|
||||
|
||||
return useMutation({
|
||||
mutationFn: TodolistAPI.createTask,
|
||||
onSuccess: (res) => {
|
||||
const todolistId = res.data.item.todoListId;
|
||||
|
||||
queryClient.invalidateQueries([QUERY_KEYS.TASKS, todolistId]);
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
export const useUpdateTaskMutation = () => {
|
||||
const queryClient = useQueryClient();
|
||||
|
||||
return useMutation({
|
||||
mutationFn: TodolistAPI.updateTask,
|
||||
onSuccess: async (res) => {
|
||||
const todolistId = res.data.item.todoListId;
|
||||
|
||||
await queryClient.invalidateQueries([QUERY_KEYS.TASKS, todolistId]);
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
export const useDeleteTaskMutation = () => {
|
||||
const queryClient = useQueryClient();
|
||||
|
||||
return useMutation({
|
||||
mutationFn: TodolistAPI.deleteTask,
|
||||
onSuccess: (_, variables) => {
|
||||
const todolistId = variables.todolistId;
|
||||
|
||||
queryClient.invalidateQueries([QUERY_KEYS.TASKS, todolistId]);
|
||||
},
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user