import Dropdown from "@/components/Dropdown"; import LinkList from "@/components/LinkList"; import Modal from "@/components/Modal"; import LinkModal from "@/components/Modal/LinkModal"; import CollectionInfo from "@/components/Modal/Collection/CollectionInfo"; import DeleteCollection from "@/components/Modal/Collection/DeleteCollection"; import useCollectionStore from "@/store/collections"; import useLinkStore from "@/store/links"; import { CollectionIncludingMembers } from "@/types/global"; import { faEllipsis, faFolder, faSort, } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { useRouter } from "next/router"; import { ChangeEvent, useEffect, useState } from "react"; import MainLayout from "@/layouts/MainLayout"; import { useSession } from "next-auth/react"; import ProfilePhoto from "@/components/ProfilePhoto"; import TeamManagement from "@/components/Modal/Collection/TeamManagement"; import SortLinkDropdown from "@/components/SortLinkDropdown"; export default function () { const router = useRouter(); const { links } = useLinkStore(); const { collections } = useCollectionStore(); const { data } = useSession(); const [expandDropdown, setExpandDropdown] = useState(false); const [linkModal, setLinkModal] = useState(false); const [collectionInfoModal, setCollectionInfoModal] = useState(false); const [collectionMembersModal, setCollectionMembersModal] = useState(false); const [deleteCollectionModal, setDeleteCollectionModal] = useState(false); const [sortDropdown, setSortDropdown] = useState(false); const [sortBy, setSortBy] = useState("Name (A-Z)"); const [activeCollection, setActiveCollection] = useState(); const [sortedLinks, setSortedLinks] = useState(links); const toggleLinkModal = () => { setLinkModal(!linkModal); }; const toggleCollectionInfoModal = () => { setCollectionInfoModal(!collectionInfoModal); }; const toggleCollectionMembersModal = () => { setCollectionMembersModal(!collectionMembersModal); }; const toggleDeleteCollectionModal = () => { setDeleteCollectionModal(!deleteCollectionModal); }; const handleSortChange = (event: ChangeEvent) => { setSortBy(event.target.value); }; useEffect(() => { setActiveCollection( collections.find((e) => e.id === Number(router.query.id)) ); // Sorting logic const linksArray = [ ...links.filter((e) => e.collection.id === Number(router.query.id)), ]; if (sortBy === "Name (A-Z)") setSortedLinks(linksArray.sort((a, b) => a.name.localeCompare(b.name))); else if (sortBy === "Title (A-Z)") setSortedLinks(linksArray.sort((a, b) => a.title.localeCompare(b.title))); else if (sortBy === "Name (Z-A)") setSortedLinks(linksArray.sort((a, b) => b.name.localeCompare(a.name))); else if (sortBy === "Title (Z-A)") setSortedLinks(linksArray.sort((a, b) => b.title.localeCompare(a.title))); else if (sortBy === "Date (Newest First)") setSortedLinks( linksArray.sort( (a, b) => new Date(b.createdAt as string).getTime() - new Date(a.createdAt as string).getTime() ) ); else if (sortBy === "Date (Oldest First)") setSortedLinks( linksArray.sort( (a, b) => new Date(a.createdAt as string).getTime() - new Date(b.createdAt as string).getTime() ) ); }, [links, router, collections, sortBy]); return (

{activeCollection?.name}

{activeCollection ? (
{activeCollection.ownerId === data?.user.id ? "Manage" : "View"}{" "} Team
{activeCollection?.members .sort((a, b) => (a.userId as number) - (b.userId as number)) .map((e, i) => { return ( ); }) .slice(0, 4)} {activeCollection?.members.length && activeCollection.members.length - 4 > 0 ? (
+{activeCollection?.members?.length - 4}
) : null}
) : null}

{activeCollection?.description}

setSortDropdown(!sortDropdown)} id="sort-dropdown" className="inline-flex rounded-md cursor-pointer hover:bg-slate-200 duration-100 p-1" >
{sortDropdown ? ( setSortDropdown(!sortDropdown)} /> ) : null}
setExpandDropdown(!expandDropdown)} id="expand-dropdown" className="inline-flex rounded-md cursor-pointer hover:bg-slate-200 duration-100 p-1" >
{expandDropdown ? ( { toggleLinkModal(); setExpandDropdown(false); }, }, { name: "Edit Collection Info", onClick: () => { toggleCollectionInfoModal(); setExpandDropdown(false); }, }, { name: "Share/Collaborate", onClick: () => { toggleCollectionMembersModal(); setExpandDropdown(false); }, }, { name: "Delete Collection", onClick: () => { toggleDeleteCollectionModal(); setExpandDropdown(false); }, }, ]} onClickOutside={(e: Event) => { const target = e.target as HTMLInputElement; if (target.id !== "expand-dropdown") setExpandDropdown(false); }} className="absolute top-8 right-0 z-10 w-40" /> ) : null} {linkModal ? ( ) : null} {collectionInfoModal && activeCollection ? ( ) : null} {collectionMembersModal && activeCollection ? ( ) : null} {deleteCollectionModal && activeCollection ? ( ) : null}
{sortedLinks.map((e, i) => { return ; })}
); }