From e1ef638f0e3b536f67c72ca4e682cb80ff3064ca Mon Sep 17 00:00:00 2001 From: Isaac Wise Date: Sat, 10 Feb 2024 16:04:30 -0600 Subject: [PATCH] Only show checkbox if the user has perms --- components/LinkViews/LinkCard.tsx | 7 +++---- components/LinkViews/LinkList.tsx | 17 ++++++++++++----- .../ModalContent/BulkDeleteLinksModal.tsx | 4 ++-- pages/collections/[id].tsx | 13 ++++++++----- 4 files changed, 25 insertions(+), 16 deletions(-) diff --git a/components/LinkViews/LinkCard.tsx b/components/LinkViews/LinkCard.tsx index d08b898..8ebcd52 100644 --- a/components/LinkViews/LinkCard.tsx +++ b/components/LinkViews/LinkCard.tsx @@ -16,7 +16,7 @@ import Link from "next/link"; import LinkIcon from "./LinkComponents/LinkIcon"; import useOnScreen from "@/hooks/useOnScreen"; import { generateLinkHref } from "@/lib/client/generateLinkHref"; -import useAccountStore from "@/store/account"; +import usePermissions from "@/hooks/usePermissions"; type Props = { link: LinkIncludingShortenedCollectionAndTags; @@ -43,8 +43,6 @@ export default function LinkCard({ } }; - console.log(selectedLinks) - let shortendURL; try { @@ -70,6 +68,7 @@ export default function LinkCard({ const ref = useRef(null); const isVisible = useOnScreen(ref); + const permissions = usePermissions(collection.id as number); useEffect(() => { let interval: any; @@ -98,7 +97,7 @@ export default function LinkCard({ ref={ref} className="border border-solid border-neutral-content bg-base-200 shadow-md hover:shadow-none duration-100 rounded-2xl relative" > - {showCheckbox && + {showCheckbox && (permissions === true || permissions?.canCreate || permissions?.canDelete) && { - setSelectedLinks((selectedLinks.includes(checkboxId) ? selectedLinks.filter((id) => id !== checkboxId) : [...selectedLinks, checkboxId])); + const handleCheckboxClick = (link: LinkIncludingShortenedCollectionAndTags) => { + if (selectedLinks.includes(link)) { + setSelectedLinks(selectedLinks.filter((e) => e !== link)); + } else { + setSelectedLinks([...selectedLinks, link]); + } }; let shortendURL; @@ -57,6 +62,8 @@ export default function LinkCardCompact({ ); }, [collections, links]); + const permissions = usePermissions(collection.id as number); + const [showInfo, setShowInfo] = useState(false); return ( @@ -65,12 +72,12 @@ export default function LinkCardCompact({ className={`border-neutral-content relative items-center flex ${!showInfo && !isPWA() ? "hover:bg-base-300 p-3" : "py-3" } duration-200 rounded-lg`} > - {showCheckbox && + {showCheckbox && (permissions === true || permissions?.canCreate || permissions?.canDelete) && handleCheckboxClick(link.id)} + checked={selectedLinks.includes(link)} + onChange={() => handleCheckboxClick(link)} /> } 1 ? "s" : ""}!`); + response.ok && toast.success(`Deleted ${selectedLinks.length} Link${selectedLinks.length > 1 ? "s" : ""}`); setSelectedLinks([]); onClose(); @@ -25,7 +25,7 @@ export default function BulkDeleteLinksModal({ onClose }: Props) { return ( -

Delete {selectedLinks.length} Link{selectedLinks.length > 1 ? "s" : ""}!

+

Delete {selectedLinks.length} Link{selectedLinks.length > 1 ? "s" : ""}

diff --git a/pages/collections/[id].tsx b/pages/collections/[id].tsx index a5d9948..8d1be52 100644 --- a/pages/collections/[id].tsx +++ b/pages/collections/[id].tsx @@ -42,6 +42,7 @@ export default function Index() { useState(); const permissions = usePermissions(activeCollection?.id as number); + console.log(permissions) useLinks({ collectionId: Number(router.query.id), sort: sortBy }); @@ -316,19 +317,21 @@ export default function Index() { )} - {selectedLinks.length > 0 && permissions && -
+
+ {selectedLinks.length > 0 && (permissions === true || permissions?.canUpdate) && + } + {selectedLinks.length > 0 && (permissions === true || permissions?.canDelete) && -
- } + } +
{links.some((e) => e.collectionId === Number(router.query.id)) ? (