From fd724b493e94e329d99f88579b0773f08760a2f4 Mon Sep 17 00:00:00 2001 From: Anmol Singh Bhatia Date: Thu, 20 Feb 2025 18:23:16 +0530 Subject: [PATCH 1/2] fix: work item header translation --- .../[workspaceSlug]/(projects)/browse/[workItem]/header.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/web/app/[workspaceSlug]/(projects)/browse/[workItem]/header.tsx b/web/app/[workspaceSlug]/(projects)/browse/[workItem]/header.tsx index bf19d8f0de2..dbfa30be7c7 100644 --- a/web/app/[workspaceSlug]/(projects)/browse/[workItem]/header.tsx +++ b/web/app/[workspaceSlug]/(projects)/browse/[workItem]/header.tsx @@ -3,6 +3,7 @@ import { observer } from "mobx-react"; import { useParams } from "next/navigation"; import { Briefcase } from "lucide-react"; +import { useTranslation } from "@plane/i18n"; // ui import { Breadcrumbs, LayersIcon, Header, Logo } from "@plane/ui"; // components @@ -17,6 +18,7 @@ export const ProjectIssueDetailsHeader = observer(() => { const router = useAppRouter(); const { workspaceSlug, workItem } = useParams(); // store hooks + const { t } = useTranslation(); const { getProjectById, loader } = useProject(); const { issue: { getIssueById, getIssueIdByIdentifier }, @@ -61,7 +63,7 @@ export const ProjectIssueDetailsHeader = observer(() => { link={ } /> } From 8a204fe88393ced050d76b07fed90522811200b8 Mon Sep 17 00:00:00 2001 From: Anmol Singh Bhatia Date: Thu, 20 Feb 2025 18:23:40 +0530 Subject: [PATCH 2/2] fix: work item delete permission --- .../components/issues/delete-issue-modal.tsx | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/web/core/components/issues/delete-issue-modal.tsx b/web/core/components/issues/delete-issue-modal.tsx index 233eb47982d..8f7265a1693 100644 --- a/web/core/components/issues/delete-issue-modal.tsx +++ b/web/core/components/issues/delete-issue-modal.tsx @@ -1,6 +1,8 @@ "use client"; import { useEffect, useState } from "react"; +import { observer } from "mobx-react"; +import { useParams } from "next/navigation"; // types import { PROJECT_ERROR_MESSAGES, EUserPermissions, EUserPermissionsLevel } from "@plane/constants"; import { useTranslation } from "@plane/i18n"; @@ -22,11 +24,12 @@ type Props = { isEpic?: boolean; }; -export const DeleteIssueModal: React.FC = (props) => { +export const DeleteIssueModal: React.FC = observer((props) => { const { dataId, data, isOpen, handleClose, isSubIssue = false, onSubmit, isEpic = false } = props; // states const [isDeleting, setIsDeleting] = useState(false); // store hooks + const { workspaceSlug } = useParams(); const { issueMap } = useIssues(); const { getProjectById } = useProject(); const { allowPermissions } = useUserPermissions(); @@ -34,9 +37,6 @@ export const DeleteIssueModal: React.FC = (props) => { const { data: currentUser } = useUser(); - // derived values - const canPerformProjectAdminActions = allowPermissions([EUserPermissions.ADMIN], EUserPermissionsLevel.PROJECT); - useEffect(() => { setIsDeleting(false); }, [isOpen]); @@ -47,6 +47,14 @@ export const DeleteIssueModal: React.FC = (props) => { const issue = data ? data : issueMap[dataId!]; const projectDetails = getProjectById(issue?.project_id); const isIssueCreator = issue?.created_by === currentUser?.id; + + const canPerformProjectAdminActions = allowPermissions( + [EUserPermissions.ADMIN], + EUserPermissionsLevel.PROJECT, + workspaceSlug?.toString(), + projectDetails?.id + ); + const authorized = isIssueCreator || canPerformProjectAdminActions; const onClose = () => { @@ -114,4 +122,4 @@ export const DeleteIssueModal: React.FC = (props) => { } /> ); -}; +});