import { Button, FormControl, FormErrorMessage, FormLabel, Input, Modal, ModalOverlay, ModalContent, ModalHeader, ModalCloseButton, ModalBody, ModalFooter, Stack, useToast, } from "@chakra-ui/react"; import { setAuth } from "api/npm"; import { PrettyButton } from "components"; import { Formik, Form, Field } from "formik"; import { intl } from "locale"; import { validateString } from "modules/Validations"; interface SetPasswordModalProps { userId: number; isOpen: boolean; onClose: () => void; } function SetPasswordModal({ userId, isOpen, onClose }: SetPasswordModalProps) { const toast = useToast(); const onSubmit = async (payload: any, { setSubmitting, setErrors }: any) => { const showErr = (msg: string) => { toast({ description: intl.formatMessage({ id: `error.${msg}`, }), status: "error", position: "top", duration: 3000, isClosable: true, }); }; try { await setAuth(userId, { type: "password", secret: payload.password, }); onClose(); } catch (err: any) { if (err.message === "current-password-invalid") { setErrors({ current: intl.formatMessage({ id: `error.${err.message}`, }), }); } else { showErr(err.message); } } setSubmitting(false); }; return ( { const errors = {} as any; if (values.password !== values.password2) { errors.password2 = "New passwords do not match"; } return errors; }}> {({ isSubmitting, values }: any) => (
{intl.formatMessage({ id: "set-password" })} {({ field, form }: any) => ( {intl.formatMessage({ id: "password.new" })} {form.errors.password} )} {({ field, form }: any) => ( {intl.formatMessage({ id: "password.confirm" })} {form.errors.password2} )} {intl.formatMessage({ id: "form.save" })} )}
); } export { SetPasswordModal };