/** * Copyright (c) 2023-present Plane Software, Inc. and contributors * SPDX-License-Identifier: AGPL-3.0-only * See the LICENSE file for details. */ import { useEffect, useState } from "react"; import { observer } from "mobx-react"; import { PanelLeft } from "lucide-react"; import { useTranslation } from "@plane/i18n"; import { EmptyStateCompact } from "@plane/propel/empty-state"; import { TransferIcon } from "@plane/propel/icons"; import type { TInboxIssueCurrentTab } from "@plane/types"; import { EInboxIssueCurrentTab } from "@plane/types"; import { cn } from "@plane/utils"; import { InboxLayoutLoader } from "@/components/ui/loader/layouts/project-inbox/inbox-layout-loader"; import { useProjectExternalContours } from "@/hooks/store/use-project-external-contours"; import { ExternalContoursContentRoot } from "./content-root"; import { ExternalContoursSidebar } from "./sidebar"; type TExternalContoursRoot = { workspaceSlug: string; projectId: string; inboxIssueId: string | undefined; navigationTab?: TInboxIssueCurrentTab | undefined; }; export const ExternalContoursRoot = observer(function ExternalContoursRoot(props: TExternalContoursRoot) { const { workspaceSlug, projectId, inboxIssueId, navigationTab } = props; const [isMobileSidebar, setIsMobileSidebar] = useState(true); const { t } = useTranslation(); const { loader, error, currentTab, currentProjectId, handleCurrentTab, fetchRequests } = useProjectExternalContours(); useEffect(() => { if (!workspaceSlug || !projectId) return; const hasProjectChanged = currentProjectId && currentProjectId !== projectId; if (navigationTab && navigationTab !== currentTab) { handleCurrentTab(workspaceSlug, projectId, navigationTab); } else if (hasProjectChanged) { handleCurrentTab(workspaceSlug, projectId, EInboxIssueCurrentTab.OPEN); } else { fetchRequests(workspaceSlug.toString(), projectId.toString(), navigationTab || EInboxIssueCurrentTab.OPEN); } // eslint-disable-next-line react-hooks/exhaustive-deps }, [workspaceSlug, projectId, navigationTab]); if (loader === "init-loading") { return (