// Copyright (C) 2022-present Daniel31x13 // This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. // You should have received a copy of the GNU General Public License along with this program. If not, see . import React, { useState } from "react"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faClose, faPlus } from "@fortawesome/free-solid-svg-icons"; import useCollectionStore from "@/store/collections"; import { ExtendedCollection, NewCollection } from "@/types/global"; import { useSession } from "next-auth/react"; import RequiredBadge from "../RequiredBadge"; import addMemberToCollection from "@/lib/client/addMemberToCollection"; type Props = { toggleCollectionModal: Function; }; export default function AddCollection({ toggleCollectionModal }: Props) { const [newCollection, setNewCollection] = useState({ name: "", description: "", members: [], }); const [memberEmail, setMemberEmail] = useState(""); const { addCollection } = useCollectionStore(); const session = useSession(); const submit = async () => { console.log(newCollection); const response = await addCollection(newCollection as NewCollection); if (response) toggleCollectionModal(); }; const setMemberState = (newMember: any) => { setNewCollection({ ...newCollection, members: [...newCollection.members, newMember], }); setMemberEmail(""); }; return (

New Collection

Name

setNewCollection({ ...newCollection, name: e.target.value }) } type="text" placeholder="e.g. Example Collection" className="w-full rounded-md p-3 border-sky-100 border-solid border outline-none focus:border-sky-500 duration-100" />

Description

setNewCollection({ ...newCollection, description: e.target.value, }) } type="text" placeholder="Collection description" className="w-full rounded-md p-3 border-sky-100 border-solid border outline-none focus:border-sky-500 duration-100" />

Members

{ setMemberEmail(e.target.value); }} type="text" placeholder="Email" className="w-full rounded-md p-3 pr-12 border-sky-100 border-solid border outline-none focus:border-sky-500 duration-100" />
addMemberToCollection( session.data?.user.email as string, memberEmail, newCollection as unknown as ExtendedCollection, setMemberState, "ADD" ) } className="absolute flex items-center justify-center right-2 top-2 bottom-2 bg-sky-500 hover:bg-sky-400 duration-100 text-white w-9 rounded-md cursor-pointer" >
{newCollection.members[0] ? (

(All Members have Read access to this collection.)

) : null}
{newCollection.members.map((e, i) => { return (
{ const updatedMembers = newCollection.members.filter( (member) => { return member.email !== e.email; } ); setNewCollection({ ...newCollection, members: updatedMembers, }); }} />

{e.name}

{e.email}

Permissions

(Click to toggle.)

); })}
Add Collection
); }