import { projectAtom } from "apps/labelstudio/src/providers/ProjectProvider";
|
import { useAtom } from "jotai";
|
import React, { useEffect } from "react";
|
import { useAPI } from "../../../providers/ApiProvider";
|
|
export const useDraftProject = () => {
|
const api = useAPI();
|
const [project, setProject] = useAtom(projectAtom);
|
|
const fetchDraftProject = React.useCallback(async () => {
|
const response = await api.callApi("projects");
|
|
// always create the new one
|
const projects = response?.results ?? [];
|
const lastIndex = projects.length;
|
let projectNumber = lastIndex + 1;
|
let projectName = `New Project #${projectNumber}`;
|
|
// dirty hack to get proper non-duplicate name
|
while (projects.find(({ title }) => title === projectName)) {
|
projectNumber++;
|
projectName = `New Project #${projectNumber}`;
|
}
|
|
const draft = await api.callApi("createProject", {
|
body: {
|
title: projectName,
|
is_draft: true,
|
},
|
});
|
|
if (draft) setProject(draft);
|
}, []);
|
|
useEffect(() => {
|
fetchDraftProject();
|
}, []);
|
|
return { project, setProject };
|
};
|