diff --git a/src/components/UserEditModal/UserEditModal.jsx b/src/components/UserEditModal/UserEditModal.jsx index 853f684..96eae3d 100644 --- a/src/components/UserEditModal/UserEditModal.jsx +++ b/src/components/UserEditModal/UserEditModal.jsx @@ -14,200 +14,11 @@ import css from "../UserEditModal/UserEditModal.module.css"; import svg from "../../img/icons.svg"; const ValidationSchema = Yup.object().shape({ - name: Yup.string() - .min(4, "Too Short!") - .max(64, "Too Long!") - .required("Required"), - email: Yup.string().email("Must be a valid email!").required("Required"), - password: Yup.string() - .min(8, "Too short") - .max(64, "Too long") - .required("Required"), + name: Yup.string().min(4, "Too Short!").max(64, "Too Long!"), + email: Yup.string().email("Must be a valid email!"), + password: Yup.string().min(8, "Too short").max(64, "Too long"), }); -// export default function UserEditModal({ onClose }) { -// const user = useSelector(selectUser); -// const dispatch = useDispatch(); - -// // ссылка к скрытому тнпуту тип файл -// const fileInputRef = useRef(null); - -// const handleMenuClick = (ev) => { -// ev.stopPropagation(); -// }; - -// const handleButtonClick = () => { -// fileInputRef.current.click(); -// }; - -// const handleFileChange = async (event) => { -// const file = event.target.files[0]; -// if (file) { -// try { -// //создаем новый объект FormData для отправки файла на сервер -// const formData = new FormData(); -// //добавляем выбранный файл в объект FormData -// formData.append("avatar", file); -// const response = await axios.put( -// "https://project06back.onrender.com/users/avatar", -// formData, -// { -// headers: { -// "Content-Type": "multipart/form-data", -// }, -// } -// ); -// const url = response.data.avatarURL; -// if (url) { -// // Установ новый URL аватара в стейт пользователя -// dispatch(updAvatarURL(url)); -// } -// } catch (error) { -// console.log(error); -// } -// } -// }; - -// const handleSubmit = async (values) => { -// try { -// const sendInfo = { -// name: values.name, -// email: values.email, -// password: values.password, -// }; -// await dispatch(updateUserInfo(sendInfo)) -// .unwrap() -// .then((data) => { -// if (data === "") { -// toast.error( -// "You have not updated any details.Please review and update " -// ); -// } else { -// toast.success("Profile updated successfully"); -// onClose(); -// } -// }); -// } catch (error) { -// let statusCode = error.slice(-3); -// let nmb = parseInt(statusCode); - -// if (nmb === 403) { -// toast.error("The password is invalid.Please try again"); -// } else { -// toast.error("The error occured.Please try again"); -// } -// } -// }; - -// return ( -// <> -//
onClose()}> -//
handleMenuClick(e)} -// > -//
-// -//
-//

Edit Profile

-//
-// - -// -//
-//
-// -//
-//
-//
-//
-//
-//
-//
- -// -//
-//
-//
-//
-//
-// -// ); -// } - export default function UserEditModal({ onClose }) { const user = useSelector(selectUser); const dispatch = useDispatch(); @@ -253,11 +64,19 @@ export default function UserEditModal({ onClose }) { const handleSubmit = async (values) => { try { - const sendInfo = { - name: values.name, - email: values.email, - password: values.password, - }; + let sendInfo = {}; + + if (values.name !== user.name) { + sendInfo.name = values.name; + } + if (values.email !== user.email) { + sendInfo.email = values.email; + } + + if (values.password !== "") { + sendInfo.password = values.password; + } + await dispatch(updateUserInfo(sendInfo)) .unwrap() .then((data) => { @@ -274,8 +93,8 @@ export default function UserEditModal({ onClose }) { let statusCode = error.slice(-3); let nmb = parseInt(statusCode); - if (nmb === 403) { - toast.error("The password is invalid.Please try again"); + if (nmb === 409) { + toast.error("Email already in use. Please use a different email."); } else { toast.error("The error occured.Please try again"); } @@ -302,10 +121,7 @@ export default function UserEditModal({ onClose }) {

Edit Profile

-
handleButtonClick()} - > +
{ - e.stopPropagation(); - handleButtonClick(); - }} + onClick={() => handleButtonClick()} > diff --git a/src/redux/auth/operations.js b/src/redux/auth/operations.js index 180b9c3..bdcd9b6 100644 --- a/src/redux/auth/operations.js +++ b/src/redux/auth/operations.js @@ -1,4 +1,3 @@ -// import { createAction } from "@reduxjs/toolkit"; import axios from "axios"; import { createAsyncThunk } from "@reduxjs/toolkit";