import { Dispatch, SetStateAction, useEffect, useState } from "react"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faClose } from "@fortawesome/free-solid-svg-icons"; import useAccountStore from "@/store/account"; import { AccountSettings } from "@/types/global"; import { useSession } from "next-auth/react"; import { resizeImage } from "@/lib/client/resizeImage"; import { faPenToSquare } from "@fortawesome/free-regular-svg-icons"; import SubmitButton from "../../SubmitButton"; import ProfilePhoto from "../../ProfilePhoto"; type Props = { toggleSettingsModal: Function; setUser: Dispatch>; user: AccountSettings; }; export default function ProfileSettings({ toggleSettingsModal, setUser, user, }: Props) { const { update } = useSession(); const { account, updateAccount } = useAccountStore(); const [profileStatus, setProfileStatus] = useState(true); const handleProfileStatus = (e: boolean) => { setProfileStatus(!e); }; const handleImageUpload = async (e: any) => { const file: File = e.target.files[0]; const fileExtension = file.name.split(".").pop()?.toLowerCase(); const allowedExtensions = ["png", "jpeg", "jpg"]; if (allowedExtensions.includes(fileExtension as string)) { const resizedFile = await resizeImage(file); if ( resizedFile.size < 1048576 // 1048576 Bytes == 1MB ) { const reader = new FileReader(); reader.onload = () => { setUser({ ...user, profilePic: reader.result as string }); }; reader.readAsDataURL(resizedFile); } else { console.log("Please select a PNG or JPEG file thats less than 1MB."); } } else { console.log("Invalid file format."); } }; useEffect(() => { setUser({ ...user, oldPassword: undefined, newPassword: undefined }); }, []); const submit = async () => { const response = await updateAccount({ ...user, }); setUser({ ...user, oldPassword: undefined, newPassword: undefined }); if (user.email !== account.email || user.name !== account.name) update({ email: user.email, name: user.name }); if (response) toggleSettingsModal(); }; return (

Profile Photo

{profileStatus && (
setUser({ ...user, profilePic: "", }) } className="absolute top-1 left-1 w-5 h-5 flex items-center justify-center border p-1 bg-white border-slate-200 rounded-full text-gray-500 hover:text-red-500 duration-100 cursor-pointer" >
)}

Display Name

setUser({ ...user, name: e.target.value })} className="w-full rounded-md p-2 border-sky-100 border-solid border outline-none focus:border-sky-500 duration-100" />

Email

setUser({ ...user, email: e.target.value })} className="w-full rounded-md p-2 border-sky-100 border-solid border outline-none focus:border-sky-500 duration-100" />
{/*
TODO: Export functionality

Data Settings

Export Data
*/}
); }