import size from "lodash/size"; import { observer } from "mobx-react-lite"; import { useRouter } from "next/router"; // hooks import { useApplication, useEventTracker, useIssues } from "hooks/store"; // components import { EmptyState } from "components/empty-state"; // constants import { EIssueFilterType, EIssuesStoreType } from "constants/issue"; import { EmptyStateType } from "constants/empty-state"; // types import { IIssueFilterOptions } from "@plane/types"; export const ProjectEmptyState: React.FC = observer(() => { // router const router = useRouter(); const { workspaceSlug, projectId } = router.query; // store hooks const { commandPalette: commandPaletteStore } = useApplication(); const { setTrackElement } = useEventTracker(); const { issuesFilter } = useIssues(EIssuesStoreType.PROJECT); const userFilters = issuesFilter?.issueFilters?.filters; const activeLayout = issuesFilter?.issueFilters?.displayFilters?.layout; const issueFilterCount = size( Object.fromEntries( Object.entries(userFilters ?? {}).filter(([, value]) => value && Array.isArray(value) && value.length > 0) ) ); const handleClearAllFilters = () => { if (!workspaceSlug || !projectId) return; const newFilters: IIssueFilterOptions = {}; Object.keys(userFilters ?? {}).forEach((key) => { newFilters[key as keyof IIssueFilterOptions] = null; }); issuesFilter.updateFilters(workspaceSlug.toString(), projectId.toString(), EIssueFilterType.FILTERS, { ...newFilters, }); }; const emptyStateType = issueFilterCount > 0 ? EmptyStateType.PROJECT_EMPTY_FILTER : EmptyStateType.PROJECT_NO_ISSUES; const additionalPath = issueFilterCount > 0 ? activeLayout ?? "list" : undefined; const emptyStateSize = issueFilterCount > 0 ? "lg" : "sm"; return (