"use client"; import { useEffect } from "react"; import { observer } from "mobx-react"; import { Layers } from "lucide-react"; // plane imports import { useTranslation } from "@plane/i18n"; import { cn } from "@plane/utils"; // hooks import { useModule } from "@/hooks/store/use-module"; export type TReadonlyModuleProps = { className?: string; hideIcon?: boolean; value: string | string[] | null; placeholder?: string; projectId: string | undefined; multiple?: boolean; showCount?: boolean; workspaceSlug: string; }; export const ReadonlyModule: React.FC = observer((props) => { const { className, hideIcon = false, value, placeholder, multiple = false, showCount = true, workspaceSlug, projectId, } = props; const { t } = useTranslation(); const { getModuleById, fetchModules } = useModule(); const moduleIds = Array.isArray(value) ? value : value ? [value] : []; const modules = moduleIds.map((id) => getModuleById(id)).filter(Boolean); useEffect(() => { if (moduleIds.length > 0 && projectId) { fetchModules(workspaceSlug, projectId); } }, [value, projectId, workspaceSlug]); if (modules.length === 0) { return (
{!hideIcon && } {placeholder ?? t("common.none")}
); } if (multiple) { const displayText = showCount && modules.length > 1 ? `${modules[0]?.name} +${modules.length - 1}` : modules[0]?.name; return (
{!hideIcon && } {displayText}
); } const moduleItem = modules[0]; return (
{!hideIcon && } {moduleItem?.name}
); });