import { useTranslation } from "react-i18next"; import Link from "next/link"; import { useRouter } from "next/router"; import { Menu, MenuItem } from "@app/components/v2"; import { useWorkspace } from "@app/context"; import { useGetAccessRequestsCount, useGetSecretApprovalRequestCount } from "@app/hooks/api"; import { ProjectType } from "@app/hooks/api/workspace/types"; export const ProjectSidebarItem = () => { const { currentWorkspace } = useWorkspace(); const router = useRouter(); const { t } = useTranslation(); const workspaceId = currentWorkspace?.id || ""; const projectSlug = currentWorkspace?.slug || ""; const { data: secretApprovalReqCount } = useGetSecretApprovalRequestCount({ workspaceId }); const { data: accessApprovalRequestCount } = useGetAccessRequestsCount({ projectSlug }); const pendingRequestsCount = (secretApprovalReqCount?.open || 0) + (accessApprovalRequestCount?.pendingCount || 0); if ( !currentWorkspace || router.asPath.startsWith("personal") || router.asPath.startsWith("integrations") || router.asPath.startsWith("/app-connections") ) { return
; } const isSecretManager = currentWorkspace?.type === ProjectType.SecretManager; const isCertManager = currentWorkspace?.type === ProjectType.CertificateManager; const isCmek = currentWorkspace?.type === ProjectType.KMS; const isSsh = currentWorkspace?.type === ProjectType.SSH; return ( {isSecretManager && ( {t("nav.menu.secrets")} )} {isCertManager && ( Overview )} {isCmek && ( Overview )} {isSsh && ( Overview )} Access Control {isSecretManager && ( {t("nav.menu.integrations")} )} {isSecretManager && ( Secret Rotation )} {isSecretManager && ( Approvals {Boolean( secretApprovalReqCount?.open || accessApprovalRequestCount?.pendingCount ) && ( {pendingRequestsCount} )} )} {t("nav.menu.project-settings")} ); };