import { ReactElement } from "react"; import { useRouter } from "next/router"; import useSWR from "swr"; import { observer } from "mobx-react"; import { Inbox } from "lucide-react"; // hooks import { useProject, useInboxIssues } from "hooks/store"; // layouts import { AppLayout } from "layouts/app-layout"; // ui import { Spinner } from "@plane/ui"; // components import { ProjectInboxHeader } from "components/headers"; import { InboxSidebarRoot, InboxIssueActionsHeader } from "components/inbox"; import { InboxIssueDetailRoot } from "components/issues/issue-detail/inbox"; // types import { NextPageWithLayout } from "lib/types"; const ProjectInboxPage: NextPageWithLayout = observer(() => { const router = useRouter(); const { workspaceSlug, projectId, inboxId, inboxIssueId } = router.query; // store hooks const { issues: { getInboxIssuesByInboxId }, } = useInboxIssues(); const { currentProjectDetails } = useProject(); const { filters: { fetchInboxFilters }, issues: { loader, fetchInboxIssues }, } = useInboxIssues(); useSWR( workspaceSlug && projectId && currentProjectDetails && currentProjectDetails?.inbox_view ? `INBOX_ISSUES_${workspaceSlug.toString()}_${projectId.toString()}` : null, async () => { if (workspaceSlug && projectId && inboxId && currentProjectDetails && currentProjectDetails?.inbox_view) { await fetchInboxFilters(workspaceSlug.toString(), projectId.toString(), inboxId.toString()); await fetchInboxIssues(workspaceSlug.toString(), projectId.toString(), inboxId.toString()); } } ); // inbox issues list const inboxIssuesList = inboxId ? getInboxIssuesByInboxId(inboxId?.toString()) : undefined; if (!workspaceSlug || !projectId || !inboxId) return <>; return ( <> {loader === "fetch" ? (
) : (
{workspaceSlug && projectId && inboxId && ( )}
{workspaceSlug && projectId && inboxId && inboxIssueId ? (
) : (
{inboxIssuesList && inboxIssuesList.length > 0 ? ( {inboxIssuesList?.length} issues found. Select an issue from the sidebar to view its details. ) : ( No issues found )}
)}
)} ); }); ProjectInboxPage.getLayout = function getLayout(page: ReactElement) { return ( } withProjectWrapper> {page} ); }; export default ProjectInboxPage;