fix: project favorite permission validation (#5587)
This commit is contained in:
parent
fdcd9a376c
commit
87d6544b72
1 changed files with 22 additions and 15 deletions
|
|
@ -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>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue