import * as Yup from "yup"; import PropTypes from "prop-types"; import { Formik, Form } from "formik"; import { Button } from "../Button"; import { TextField } from "../Form/TextField"; import accountsService from "../../services/accountsService"; const isPopulated = (value) => value?.length > 0; const emailUpdateSchema = Yup.object().shape({ email: Yup.string().email("Please provide a valid email address"), confirmEmail: Yup.string() .oneOf([Yup.ref("email"), null], "Emails must match") .when("email", { is: isPopulated, then: (schema) => schema.required("Please confirm new email address"), }), password: Yup.string().min(1, "Password can't be blank"), confirmPassword: Yup.string() .oneOf([Yup.ref("password"), null], "Passwords must match") .when("password", { is: isPopulated, then: (schema) => schema.required("Please confirm new password"), }), }); export const AccountSettingsForm = ({ user, onSuccess, onFailure }) => { return ( { try { const user = await accountsService .put("user", { json: { email: email || undefined, password: password || undefined, }, }) .json(); resetForm(); await onSuccess(user); } catch { onFailure(); } }} > {({ errors, touched, isValid, dirty }) => (
)}
); }; AccountSettingsForm.propTypes = { onSuccess: PropTypes.func.isRequired, onFailure: PropTypes.func.isRequired, };