diff --git a/src/pages/taskmanager/project/hooks/useProjectData.ts b/src/pages/taskmanager/project/hooks/useProjectData.ts index 7611953..2f9aeb4 100644 --- a/src/pages/taskmanager/project/hooks/useProjectData.ts +++ b/src/pages/taskmanager/project/hooks/useProjectData.ts @@ -18,6 +18,14 @@ export const useGetProjectDetail = (id: string) => { }); }; +export const useGetProject = (id: string) => { + return useQuery({ + queryKey: ["project", id], + queryFn: () => api.getProject(id), + enabled: !!id, + }); +}; + export const useCreateProject = () => { const queryClient = useQueryClient(); @@ -35,13 +43,7 @@ export const useUpdateProject = () => { const queryClient = useQueryClient(); return useMutation({ - mutationFn: ({ - id, - params, - }: { - id: string; - params: UpdateProjectType; - }) => api.updateProject(id, params), + mutationFn: ({ id, params }: { id: string; params: UpdateProjectType }) => api.updateProject(id, params), onSuccess: (_data, variables) => { queryClient.invalidateQueries({ queryKey: ["projects"] }); queryClient.invalidateQueries({ diff --git a/src/pages/taskmanager/project/service/ProjectService.ts b/src/pages/taskmanager/project/service/ProjectService.ts index fa9a459..3df56ea 100644 --- a/src/pages/taskmanager/project/service/ProjectService.ts +++ b/src/pages/taskmanager/project/service/ProjectService.ts @@ -1,5 +1,5 @@ import axios from "../../../../config/axios"; -import { CreateProjectType, UpdateProjectType } from "../types/ProjectTypes"; +import { CreateProjectType, GetProjectResponse, UpdateProjectType } from "../types/ProjectTypes"; export const getProjectsByWorkspace = async (workspaceId: string) => { const { data } = await axios.get(`/task-manager/projects/user/workspace/${workspaceId}`); @@ -11,6 +11,11 @@ export const getProjectDetail = async (id: string) => { return data; }; +export const getProject = async (id: string): Promise => { + const { data } = await axios.get(`/task-manager/projects/detail/${id}`); + return data; +}; + export const createProject = async (params: CreateProjectType) => { const { data } = await axios.post(`/task-manager/projects`, params); return data; diff --git a/src/pages/taskmanager/project/types/ProjectTypes.ts b/src/pages/taskmanager/project/types/ProjectTypes.ts index 89ef99d..5f97c05 100644 --- a/src/pages/taskmanager/project/types/ProjectTypes.ts +++ b/src/pages/taskmanager/project/types/ProjectTypes.ts @@ -1,3 +1,5 @@ +import { IResponse } from "../../../../types/response.types"; + export type ProjectItem = { id: string; name: string; @@ -29,3 +31,21 @@ export type ProjectDetailType = CreateProjectType & { }; export type UpdateProjectType = CreateProjectType; + +export type ProjectTaskType = unknown; + +export type ProjectTaskPhaseType = { + id: string; + name: string; + tasks: ProjectTaskType[]; +}; + +export type ProjectWithPhasesType = { + id: string; + name: string; + taskPhases: ProjectTaskPhaseType[]; +}; + +export interface GetProjectResponse extends IResponse { + statusCode: number; +} diff --git a/src/pages/taskmanager/workspace.tsx b/src/pages/taskmanager/workspace.tsx index db37917..98e314d 100644 --- a/src/pages/taskmanager/workspace.tsx +++ b/src/pages/taskmanager/workspace.tsx @@ -5,6 +5,7 @@ import Column from "./components/Column"; import HeaderWorkspace from "./components/HeaderWorkspace"; import TaskDetailModal from "./components/task-detail/TaskDetailModal"; import tasksData from "./data/tasks.json"; +import { useGetProject } from "./project/hooks/useProjectData"; import type { TaskPhaseItemType } from "./task-phase/types/TaskPhaseTypes"; import type { Task, WorkspaceData } from "./types"; import { reorderColumns } from "./utils/reorderColumns"; @@ -12,9 +13,8 @@ import { reorderTasks } from "./utils/reorderTasks"; const Workspace: FC = () => { const { slug: projectId = "" } = useParams<{ slug: string }>(); - const [columns, setColumns] = useState( - (tasksData as WorkspaceData).columns, - ); + const { data: project } = useGetProject(projectId); + const [columns, setColumns] = useState((tasksData as WorkspaceData).columns); const [tasks, setTasks] = useState(tasksData.tasks as Task[]); const [draggedTaskId, setDraggedTaskId] = useState(null); const [draggedColumnId, setDraggedColumnId] = useState(null); @@ -22,9 +22,7 @@ const Workspace: FC = () => { const tasksByColumn = useMemo(() => { return columns.reduce>((acc, column) => { - acc[column.id] = tasks - .filter((task) => task.columnId === column.id) - .sort((a, b) => a.order - b.order); + acc[column.id] = tasks.filter((task) => task.columnId === column.id).sort((a, b) => a.order - b.order); return acc; }, {}); }, [columns, tasks]); @@ -77,9 +75,7 @@ const Workspace: FC = () => { } }; - const selectedTaskColumn = selectedTask - ? columns.find((column) => column.id === selectedTask.columnId) - : null; + const selectedTaskColumn = selectedTask ? columns.find((column) => column.id === selectedTask.columnId) : null; return (