import Link from "next/link"; import { AccountSettings, CollectionIncludingMembersAndLinkCount, } from "@/types/global"; import React, { useEffect, useState } from "react"; import ProfilePhoto from "./ProfilePhoto"; import usePermissions from "@/hooks/usePermissions"; import useLocalSettingsStore from "@/store/localSettings"; import getPublicUserData from "@/lib/client/getPublicUserData"; import EditCollectionModal from "./ModalContent/EditCollectionModal"; import EditCollectionSharingModal from "./ModalContent/EditCollectionSharingModal"; import DeleteCollectionModal from "./ModalContent/DeleteCollectionModal"; import { dropdownTriggerer } from "@/lib/client/utils"; import { useTranslation } from "next-i18next"; import { useUser } from "@/hooks/store/user"; export default function CollectionCard({ collection, }: { collection: CollectionIncludingMembersAndLinkCount; }) { const { t } = useTranslation(); const { settings } = useLocalSettingsStore(); const { data: user = {} } = useUser(); const formattedDate = new Date(collection.createdAt as string).toLocaleString( "en-US", { year: "numeric", month: "short", day: "numeric", } ); const permissions = usePermissions(collection.id as number); const [collectionOwner, setCollectionOwner] = useState< Partial >({}); useEffect(() => { const fetchOwner = async () => { if (collection && collection.ownerId !== user.id) { const owner = await getPublicUserData(collection.ownerId as number); setCollectionOwner(owner); } else if (collection && collection.ownerId === user.id) { setCollectionOwner({ id: user.id as number, name: user.name, username: user.username as string, image: user.image as string, archiveAsScreenshot: user.archiveAsScreenshot as boolean, archiveAsMonolith: user.archiveAsMonolith as boolean, archiveAsPDF: user.archiveAsPDF as boolean, }); } }; fetchOwner(); }, [collection]); const [editCollectionModal, setEditCollectionModal] = useState(false); const [editCollectionSharingModal, setEditCollectionSharingModal] = useState(false); const [deleteCollectionModal, setDeleteCollectionModal] = useState(false); return (
    {permissions === true && (
  • { (document?.activeElement as HTMLElement)?.blur(); setEditCollectionModal(true); }} className="whitespace-nowrap" > {t("edit_collection_info")}
  • )}
  • { (document?.activeElement as HTMLElement)?.blur(); setEditCollectionSharingModal(true); }} className="whitespace-nowrap" > {permissions === true ? t("share_and_collaborate") : t("view_team")}
  • { (document?.activeElement as HTMLElement)?.blur(); setDeleteCollectionModal(true); }} className="whitespace-nowrap" > {permissions === true ? t("delete_collection") : t("leave_collection")}
setEditCollectionSharingModal(true)} > {collectionOwner.id && ( )} {collection.members .sort((a, b) => (a.userId as number) - (b.userId as number)) .map((e, i) => { return ( ); }) .slice(0, 3)} {collection.members.length - 3 > 0 && (
+{collection.members.length - 3}
)}

{collection.name}

{collection.isPublic && ( )} {collection._count && collection._count.links}

{formattedDate}

{editCollectionModal && ( setEditCollectionModal(false)} activeCollection={collection} /> )} {editCollectionSharingModal && ( setEditCollectionSharingModal(false)} activeCollection={collection} /> )} {deleteCollectionModal && ( setDeleteCollectionModal(false)} activeCollection={collection} /> )}
); }