Initial commit

This commit is contained in:
Yaojia Wang
2025-11-03 00:04:07 +01:00
parent 34b701de48
commit 097300e8ec
37 changed files with 3473 additions and 109 deletions

27
lib/hooks/use-kanban.ts Normal file
View File

@@ -0,0 +1,27 @@
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
import { projectsApi } from '@/lib/api/projects';
import type { KanbanBoard } from '@/types/kanban';
import { api } from '@/lib/api/client';
export function useKanbanBoard(projectId: string) {
return useQuery<KanbanBoard>({
queryKey: ['projects', projectId, 'kanban'],
queryFn: () => projectsApi.getKanban(projectId),
enabled: !!projectId,
staleTime: 2 * 60 * 1000, // 2 minutes
});
}
export function useUpdateTaskStatus() {
const queryClient = useQueryClient();
return useMutation({
mutationFn: ({ taskId, newStatus }: { taskId: string; newStatus: string }) =>
api.patch(`/tasks/${taskId}/status`, { status: newStatus }),
onSuccess: (_, { taskId }) => {
// Invalidate kanban board queries to refetch
queryClient.invalidateQueries({ queryKey: ['kanban'] });
queryClient.invalidateQueries({ queryKey: ['tasks', taskId] });
},
});
}