Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3278 | Rev 3432 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
3416 stevensc 1
import React from "react";
2
import { useDispatch, useSelector } from "react-redux";
3
import { Controller, useForm } from "react-hook-form";
1902 stevensc 4
 
3416 stevensc 5
import { axios } from "@utils";
6
import { addNotification } from "@store/notification/notification.actions";
1921 stevensc 7
 
3416 stevensc 8
import Modal from "../modal/Modal";
9
import FormErrorFeedback from "../form/FormErrorFeedback";
10
import DropzoneComponent from "@components/dropzone/DropzoneComponent";
1902 stevensc 11
 
12
const CoverModal = ({
13
  show = false,
3416 stevensc 14
  sizes = "",
1902 stevensc 15
  onClose = () => {},
1921 stevensc 16
  onChange = () => {},
3416 stevensc 17
  url = "",
1902 stevensc 18
}) => {
3416 stevensc 19
  const labels = useSelector(({ intl }) => intl.labels);
20
  const dispatch = useDispatch();
1902 stevensc 21
 
2802 stevensc 22
  const {
3277 stevensc 23
    control,
24
    formState: { isSubmitting },
3416 stevensc 25
    handleSubmit,
26
  } = useForm();
1902 stevensc 27
 
3416 stevensc 28
  const onSubmit = handleSubmit(async () => {
3277 stevensc 29
    try {
3416 stevensc 30
      const newCover = await axios.post(url, cover);
31
      onChange(newCover);
32
      onClose();
3277 stevensc 33
    } catch (error) {
3416 stevensc 34
      dispatch(
35
        addNotification({
36
          style: "danger",
37
          msg: "Error al actualizar el portada",
38
        })
39
      );
3277 stevensc 40
    }
3416 stevensc 41
  });
1921 stevensc 42
 
1902 stevensc 43
  return (
44
    <Modal
45
      title={labels.cover}
46
      show={show}
47
      onClose={onClose}
48
      onAccept={onSubmit}
3277 stevensc 49
      loading={isSubmitting}
1902 stevensc 50
    >
3277 stevensc 51
      <Controller
3416 stevensc 52
        name="cover"
3277 stevensc 53
        control={control}
3416 stevensc 54
        rules={{ required: "Portada requerida" }}
3277 stevensc 55
        render={({ field: { onChange, value }, fieldState: { error } }) => (
56
          <>
57
            <DropzoneComponent
3416 stevensc 58
              type="IMAGE"
3277 stevensc 59
              onUploaded={onChange}
60
              settedFile={value}
61
              recomendationText={`Imágenes recomendadas de ${sizes}`}
62
            />
63
            {error && <FormErrorFeedback>{error.message}</FormErrorFeedback>}
64
          </>
65
        )}
1902 stevensc 66
      />
67
    </Modal>
3416 stevensc 68
  );
69
};
1902 stevensc 70
 
3416 stevensc 71
export default CoverModal;