From 5b4175c8b04c9bf0757a50ec527146585b98130e Mon Sep 17 00:00:00 2001 From: Anmol Singh Bhatia Date: Thu, 12 Sep 2024 12:28:18 +0530 Subject: [PATCH] fix: project favorite permission validation --- web/core/components/project/card.tsx | 37 +++++++++++++++++----------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/web/core/components/project/card.tsx b/web/core/components/project/card.tsx index b0444742a50..8ccf6694e5b 100644 --- a/web/core/components/project/card.tsx +++ b/web/core/components/project/card.tsx @@ -29,11 +29,11 @@ import { cn } from "@/helpers/common.helper"; import { renderFormattedDate } from "@/helpers/date-time.helper"; import { copyUrlToClipboard } from "@/helpers/string.helper"; // hooks -import { useProject } from "@/hooks/store"; +import { useProject, useUserPermissions } from "@/hooks/store"; import { useAppRouter } from "@/hooks/use-app-router"; import { usePlatformOS } from "@/hooks/use-platform-os"; // plane-web constants -import { EUserPermissions } from "@/plane-web/constants/user-permissions"; +import { EUserPermissions, EUserPermissionsLevel } from "@/plane-web/constants/user-permissions"; type Props = { project: IProject; @@ -52,11 +52,16 @@ export const ProjectCard: React.FC = observer((props) => { const { workspaceSlug } = useParams(); // store hooks const { addProjectToFavorites, removeProjectFromFavorites } = useProject(); + const { allowPermissions } = useUserPermissions(); // hooks const { isMobile } = usePlatformOS(); project.member_role; // derived values const projectMembersIds = project.members?.map((member) => member.member_id); + const shouldRenderFavorite = allowPermissions( + [EUserPermissions.ADMIN, EUserPermissions.MEMBER], + EUserPermissionsLevel.WORKSPACE + ); // auth const isOwner = project.member_role === EUserPermissions.ADMIN; const isMember = project.member_role === EUserPermissions.MEMBER; @@ -233,19 +238,21 @@ export const ProjectCard: React.FC = observer((props) => { > - { - e.preventDefault(); - e.stopPropagation(); - if (project.is_favorite) handleRemoveFromFavorites(); - else handleAddToFavorites(); - }} - selected={project.is_favorite} - /> + {shouldRenderFavorite && ( + { + e.preventDefault(); + e.stopPropagation(); + if (project.is_favorite) handleRemoveFromFavorites(); + else handleAddToFavorites(); + }} + selected={project.is_favorite} + /> + )} )}