import SortDropdown from "@/components/SortDropdown"; import useLinks from "@/hooks/useLinks"; import MainLayout from "@/layouts/MainLayout"; import useLinkStore from "@/store/links"; import React, { useEffect, useState } from "react"; import PageHeader from "@/components/PageHeader"; import { Sort, ViewMode } from "@/types/global"; import ViewDropdown from "@/components/ViewDropdown"; import CardView from "@/components/LinkViews/Layouts/CardView"; import ListView from "@/components/LinkViews/Layouts/ListView"; import BulkDeleteLinksModal from "@/components/ModalContent/BulkDeleteLinksModal"; import BulkEditLinksModal from "@/components/ModalContent/BulkEditLinksModal"; import useCollectivePermissions from "@/hooks/useCollectivePermissions"; import toast from "react-hot-toast"; // import GridView from "@/components/LinkViews/Layouts/GridView"; import { useRouter } from "next/router"; import MasonryView from "@/components/LinkViews/Layouts/MasonryView"; export default function PinnedLinks() { const { links, selectedLinks, deleteLinksById, setSelectedLinks } = useLinkStore(); const [viewMode, setViewMode] = useState( localStorage.getItem("viewMode") || ViewMode.Card ); const [sortBy, setSortBy] = useState(Sort.DateNewestFirst); useLinks({ sort: sortBy, pinnedOnly: true }); const router = useRouter(); const [bulkDeleteLinksModal, setBulkDeleteLinksModal] = useState(false); const [bulkEditLinksModal, setBulkEditLinksModal] = useState(false); const [editMode, setEditMode] = useState(false); useEffect(() => { if (editMode) return setEditMode(false); }, [router]); const collectivePermissions = useCollectivePermissions( selectedLinks.map((link) => link.collectionId as number) ); const handleSelectAll = () => { if (selectedLinks.length === links.length) { setSelectedLinks([]); } else { setSelectedLinks(links.map((link) => link)); } }; const bulkDeleteLinks = async () => { const load = toast.loading( `Deleting ${selectedLinks.length} Link${ selectedLinks.length > 1 ? "s" : "" }...` ); const response = await deleteLinksById( selectedLinks.map((link) => link.id as number) ); toast.dismiss(load); response.ok && toast.success( `Deleted ${selectedLinks.length} Link${ selectedLinks.length > 1 ? "s" : "" }!` ); }; const linkView = { [ViewMode.Card]: CardView, // [ViewMode.Grid]: GridView, [ViewMode.List]: ListView, [ViewMode.Masonry]: MasonryView, }; // @ts-ignore const LinkComponent = linkView[viewMode]; return (
{!(links.length === 0) && (
{ setEditMode(!editMode); setSelectedLinks([]); }} className={`btn btn-square btn-sm btn-ghost ${ editMode ? "bg-primary/20 hover:bg-primary/20" : "hover:bg-neutral/20" }`} >
)}
{editMode && links.length > 0 && (
{links.length > 0 && (
handleSelectAll()} checked={ selectedLinks.length === links.length && links.length > 0 } /> {selectedLinks.length > 0 ? ( {selectedLinks.length}{" "} {selectedLinks.length === 1 ? "link" : "links"} selected ) : ( Nothing selected )}
)}
)} {links.some((e) => e.pinnedBy && e.pinnedBy[0]) ? ( ) : (

Pin Your Favorite Links Here!

You can Pin your favorite Links by clicking on the three dots on each Link and clicking{" "} Pin to Dashboard.

)}
{bulkDeleteLinksModal && ( { setBulkDeleteLinksModal(false); }} /> )} {bulkEditLinksModal && ( { setBulkEditLinksModal(false); }} /> )}
); }