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 { 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<Props> = 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<Props> = observer((props) => {
>
<LinkIcon className="h-3 w-3 text-white" />
</button>
<FavoriteStar
buttonClassName="h-6 w-6 bg-white/10"
iconClassName={cn("h-3 w-3", {
"text-white": !project.is_favorite,
})}
onClick={(e) => {
e.preventDefault();
e.stopPropagation();
if (project.is_favorite) handleRemoveFromFavorites();
else handleAddToFavorites();
}}
selected={project.is_favorite}
/>
{shouldRenderFavorite && (
<FavoriteStar
buttonClassName="h-6 w-6 bg-white/10"
iconClassName={cn("h-3 w-3", {
"text-white": !project.is_favorite,
})}
onClick={(e) => {
e.preventDefault();
e.stopPropagation();
if (project.is_favorite) handleRemoveFromFavorites();
else handleAddToFavorites();
}}
selected={project.is_favorite}
/>
)}
</div>
)}
</div>