Proyectos de Subversion LeadersLinked - SPA

Rev

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

Rev Autor Línea Nro. Línea
1929 stevensc 1
import React, { useEffect } from 'react'
1460 stevensc 2
import { useDispatch, useSelector } from 'react-redux'
5 stevensc 3
import { useForm } from 'react-hook-form'
1460 stevensc 4
 
2521 stevensc 5
import { axios } from 'utils/index'
5 stevensc 6
import { addNotification } from '../../redux/notification/notification.actions'
7
 
3269 stevensc 8
import CKEditor from '@components/common/ckeditor/Ckeditor'
1460 stevensc 9
import Modal from 'components/UI/modal/Modal'
10
import FormErrorFeedback from 'components/UI/form/FormErrorFeedback'
5 stevensc 11
 
12
const AnswerModal = ({
13
  show = false,
14
  currentAnswer = '',
15
  url = '',
16
  onClose = () => null,
748 stevensc 17
  onComplete = () => null
5 stevensc 18
}) => {
19
  const labels = useSelector(({ intl }) => intl.labels)
20
  const dispatch = useDispatch()
21
 
2802 stevensc 22
  const {
23
    register,
24
    handleSubmit,
25
    setValue,
26
    formState: { errors }
27
  } = useForm()
5 stevensc 28
 
29
  const onSubmit = handleSubmit(({ description }) => {
1979 stevensc 30
    const formData = new FormData()
31
    formData.append('description', description)
5 stevensc 32
 
2521 stevensc 33
    axios.post(url, formData).then((response) => {
34
      const { data, success } = response.data
5 stevensc 35
 
2521 stevensc 36
      if (!success) {
37
        const errorMessage =
38
          typeof data === 'string'
39
            ? data
40
            : 'Error interno. Por favor, inténtelo de nuevo más tarde.'
5 stevensc 41
 
2521 stevensc 42
        dispatch(addNotification({ style: 'danger', msg: errorMessage }))
43
        return
44
      }
1979 stevensc 45
 
2521 stevensc 46
      onComplete(data)
47
      onClose()
48
    })
5 stevensc 49
  })
50
 
51
  useEffect(() => {
52
    register('description', { required: true })
53
  }, [])
54
 
55
  useEffect(() => {
56
    setValue('description', currentAnswer)
57
  }, [currentAnswer])
58
 
59
  return (
1460 stevensc 60
    <Modal
61
      title={
62
        currentAnswer ? labels.my_coach_answer_edit : labels.my_coach_answer_add
63
      }
64
      show={show}
65
      onClose={onClose}
66
      onAccept={onSubmit}
67
    >
68
      <CKEditor
2521 stevensc 69
        defaultValue={currentAnswer}
70
        onChange={(value) => setValue('description', value)}
1460 stevensc 71
      />
72
      {errors.description && (
73
        <FormErrorFeedback>{labels.error_field_empty}</FormErrorFeedback>
74
      )}
5 stevensc 75
    </Modal>
76
  )
77
}
78
 
79
export default AnswerModal