mirror of
https://github.com/makeplane/plane.git
synced 2025-12-25 16:19:43 +01:00
41 lines
1.2 KiB
TypeScript
41 lines
1.2 KiB
TypeScript
"use client";
|
|
|
|
import { FC } from "react";
|
|
import { observer } from "mobx-react";
|
|
import useSWR from "swr";
|
|
// components
|
|
import { ProjectStateLoader, GroupList } from "@/components/project-states";
|
|
// hooks
|
|
import { useProjectState } from "@/hooks/store";
|
|
|
|
type TProjectState = {
|
|
workspaceSlug: string;
|
|
projectId: string;
|
|
};
|
|
|
|
export const ProjectStateRoot: FC<TProjectState> = observer((props) => {
|
|
const { workspaceSlug, projectId } = props;
|
|
// hooks
|
|
const { groupedProjectStates, fetchProjectStates, fetchProjectStateTransitions } = useProjectState();
|
|
|
|
useSWR(
|
|
workspaceSlug && projectId ? `PROJECT_STATES_${workspaceSlug}_${projectId}` : null,
|
|
workspaceSlug && projectId
|
|
? () => {
|
|
fetchProjectStates(workspaceSlug.toString(), projectId.toString());
|
|
fetchProjectStateTransitions(workspaceSlug.toString(), projectId.toString());
|
|
}
|
|
: null,
|
|
{ revalidateIfStale: false, revalidateOnFocus: false }
|
|
);
|
|
|
|
// Loader
|
|
if (!groupedProjectStates) return <ProjectStateLoader />;
|
|
|
|
return (
|
|
<div className="py-3">
|
|
<GroupList workspaceSlug={workspaceSlug} projectId={projectId} groupedStates={groupedProjectStates} />
|
|
</div>
|
|
);
|
|
});
|