import { PlusIcon } from "lucide-react"; // components import { EmptyState } from "components/common"; import { Button } from "@plane/ui"; // assets import emptyIssue from "public/empty-state/issue.svg"; import { ExistingIssuesListModal } from "components/core"; import { observer } from "mobx-react-lite"; import { useMobxStore } from "lib/mobx/store-provider"; import { ISearchIssueResponse } from "types"; import useToast from "hooks/use-toast"; import { useState } from "react"; // constants import { EUserWorkspaceRoles } from "constants/workspace"; type Props = { workspaceSlug: string | undefined; projectId: string | undefined; moduleId: string | undefined; }; export const ModuleEmptyState: React.FC = observer((props) => { const { workspaceSlug, projectId, moduleId } = props; // states const [moduleIssuesListModal, setModuleIssuesListModal] = useState(false); const { moduleIssues: moduleIssueStore, commandPalette: commandPaletteStore, trackEvent: { setTrackElement }, user: { currentProjectRole: userRole }, } = useMobxStore(); const { setToastAlert } = useToast(); const handleAddIssuesToModule = async (data: ISearchIssueResponse[]) => { if (!workspaceSlug || !projectId || !moduleId) return; const issueIds = data.map((i) => i.id); await moduleIssueStore.addIssueToModule(workspaceSlug.toString(), moduleId.toString(), issueIds).catch(() => setToastAlert({ type: "error", title: "Error!", message: "Selected issues could not be added to the module. Please try again.", }) ); }; const isEditingAllowed = !!userRole && userRole >= EUserWorkspaceRoles.MEMBER; return ( <> setModuleIssuesListModal(false)} searchParams={{ module: true }} handleOnSubmit={handleAddIssuesToModule} />
, onClick: () => { setTrackElement("MODULE_EMPTY_STATE"); commandPaletteStore.toggleCreateIssueModal(true); }, }} secondaryButton={ } disabled={!isEditingAllowed} />
); });