import { useState } from "react"; import { useNavigate } from "react-router-dom"; import { PROJECTS_FETCH_LIMIT } from "../../constants"; import ModalImport from "../modals/import"; import ModalNewProject from "../modals/new-project"; import { IProject } from "../../types"; import { toaster } from "../../utils"; import Spinner from "../../components/global/Spinner"; import PreviewBlock from "./PreviewBlock"; import { useProjects } from "../../hooks/useProjects"; import { PlusIcon } from "@heroicons/react/outline"; import { importProject } from "../../hooks/useImportProject"; import { IImportFinalValues } from "../modals/import/form-utils"; const Projects = () => { const navigate = useNavigate(); const [limit] = useState(PROJECTS_FETCH_LIMIT); const [offset, setOffset] = useState(0); const [importing, setImporting] = useState(false); const [showImportModal, setShowImportModal] = useState(false); const [showNewProjectModal, setShowNewProjectModal] = useState(false); const { isLoading, isError, error, data, isFetching, isPreviousData } = useProjects(limit, offset); const handleImport = (values: IImportFinalValues) => { setImporting(true); importProject(values) .then((resp: any) => { navigate(`/projects/${resp.name}`); toaster(`Imported!`, "success"); }) .catch(() => { toaster(`Something went wrong!`, "error"); }) .finally(() => { setImporting(false); }); }; return ( <> {showImportModal ? ( setShowImportModal(false)} onImport={(values: IImportFinalValues) => handleImport(values)} importing={importing} /> ) : null} {showNewProjectModal ? ( setShowNewProjectModal(false)} /> ) : null}

Projects

{data && data.results.length > 0 && (
)}
{!isFetching && !isLoading && ( <>
{error && (

Something went wrong...

)}
{data.results.length > 0 && data.results.map((project: IProject) => { return (
); })}
{data.results.length === 0 && (

No projects

Get started by creating a new project

)}
{data.count > PROJECTS_FETCH_LIMIT && (
)} )}
{(isFetching || isLoading) && (
)} ); }; export default Projects;