diff --git a/Client/src/Components/TabPanels/Account/ProfilePanel.jsx b/Client/src/Components/TabPanels/Account/ProfilePanel.jsx index 122f1668b..a3a50911e 100644 --- a/Client/src/Components/TabPanels/Account/ProfilePanel.jsx +++ b/Client/src/Components/TabPanels/Account/ProfilePanel.jsx @@ -82,6 +82,7 @@ const ProfilePanel = () => { src: URL.createObjectURL(pic), name: pic.name, size: formatBytes(pic.size), + delete: false, }); //TODO - potentitally remove once image compression functions are implemented @@ -121,13 +122,23 @@ const ProfilePanel = () => { // Resets picture-related states and clears interval const removePicture = () => { errors["picture"] && clearError("picture"); + setFile({ delete: true }); clearInterval(intervalRef.current); // interrupt interval if image upload is canceled prior to completing the process setProgress({ value: 0, isLoading: false }); }; + // Opens the picture update modal + const openPictureModal = () => { + setIsOpen("picture"); + setFile({ delete: localData.deleteProfileImage }); + }; + // Closes the picture update modal and resets related states const closePictureModal = () => { - removePicture(); + errors["picture"] && clearError("picture"); + setFile(); //reset file + clearInterval(intervalRef.current); // interrupt interval if image upload is canceled prior to completing the process + setProgress({ value: 0, isLoading: false }); setIsOpen(""); }; @@ -137,20 +148,27 @@ const ProfilePanel = () => { setLocalData((prev) => ({ ...prev, file: file.src, + deleteProfileImage: false, })); setIsOpen(""); }; + console.log( + localData.deleteProfileImage === false && localData.file === undefined + ); + // Handles form submission to update user profile const handleSaveProfile = (event) => { event.preventDefault(); - // if ( - // localData.firstname === user.firstname && - // localData.lastname === user.lastname - // ) { - // // TODO: Add toast/notification for unchanged profile data - // return; - // } + if ( + localData.firstname === user.firstname && + localData.lastname === user.lastname && + localData.deleteProfileImage === undefined && + localData.file === undefined + ) { + // TODO: Add toast/notification for unchanged profile data + return; + } dispatch(update({ authToken, localData })); // TODO: Add toast/notification for profile update success @@ -158,7 +176,10 @@ const ProfilePanel = () => { // Removes current profile image from UI const handleDeletePicture = () => { - // TODO - implement delete picture function + setLocalData((prev) => ({ + ...prev, + deleteProfileImage: true, + })); }; // Initiates the account deletion process @@ -259,7 +280,16 @@ const ProfilePanel = () => { - +