fix: project favorite permission validation (#5587)

This commit is contained in:
Anmol Singh Bhatia 2024-09-12 14:09:19 +05:30 committed by GitHub
parent fdcd9a376c
commit 87d6544b72
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -29,11 +29,11 @@ import { cn } from "@/helpers/common.helper";
import { renderFormattedDate } from "@/helpers/date-time.helper"; import { renderFormattedDate } from "@/helpers/date-time.helper";
import { copyUrlToClipboard } from "@/helpers/string.helper"; import { copyUrlToClipboard } from "@/helpers/string.helper";
// hooks // hooks
import { useProject } from "@/hooks/store"; import { useProject, useUserPermissions } from "@/hooks/store";
import { useAppRouter } from "@/hooks/use-app-router"; import { useAppRouter } from "@/hooks/use-app-router";
import { usePlatformOS } from "@/hooks/use-platform-os"; import { usePlatformOS } from "@/hooks/use-platform-os";
// plane-web constants // plane-web constants
import { EUserPermissions } from "@/plane-web/constants/user-permissions"; import { EUserPermissions, EUserPermissionsLevel } from "@/plane-web/constants/user-permissions";
type Props = { type Props = {
project: IProject; project: IProject;
@ -52,11 +52,16 @@ export const ProjectCard: React.FC<Props> = observer((props) => {
const { workspaceSlug } = useParams(); const { workspaceSlug } = useParams();
// store hooks // store hooks
const { addProjectToFavorites, removeProjectFromFavorites } = useProject(); const { addProjectToFavorites, removeProjectFromFavorites } = useProject();
const { allowPermissions } = useUserPermissions();
// hooks // hooks
const { isMobile } = usePlatformOS(); const { isMobile } = usePlatformOS();
project.member_role; project.member_role;
// derived values // derived values
const projectMembersIds = project.members?.map((member) => member.member_id); const projectMembersIds = project.members?.map((member) => member.member_id);
const shouldRenderFavorite = allowPermissions(
[EUserPermissions.ADMIN, EUserPermissions.MEMBER],
EUserPermissionsLevel.WORKSPACE
);
// auth // auth
const isOwner = project.member_role === EUserPermissions.ADMIN; const isOwner = project.member_role === EUserPermissions.ADMIN;
const isMember = project.member_role === EUserPermissions.MEMBER; const isMember = project.member_role === EUserPermissions.MEMBER;
@ -233,19 +238,21 @@ export const ProjectCard: React.FC<Props> = observer((props) => {
> >
<LinkIcon className="h-3 w-3 text-white" /> <LinkIcon className="h-3 w-3 text-white" />
</button> </button>
<FavoriteStar {shouldRenderFavorite && (
buttonClassName="h-6 w-6 bg-white/10" <FavoriteStar
iconClassName={cn("h-3 w-3", { buttonClassName="h-6 w-6 bg-white/10"
"text-white": !project.is_favorite, iconClassName={cn("h-3 w-3", {
})} "text-white": !project.is_favorite,
onClick={(e) => { })}
e.preventDefault(); onClick={(e) => {
e.stopPropagation(); e.preventDefault();
if (project.is_favorite) handleRemoveFromFavorites(); e.stopPropagation();
else handleAddToFavorites(); if (project.is_favorite) handleRemoveFromFavorites();
}} else handleAddToFavorites();
selected={project.is_favorite} }}
/> selected={project.is_favorite}
/>
)}
</div> </div>
)} )}
</div> </div>