Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 1971 | Rev 2521 | 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'
4
import { CKEditor } from 'ckeditor4-react'
1460 stevensc 5
 
6
import { CKEDITOR_OPTIONS, axios } from 'utils/index'
5 stevensc 7
import { addNotification } from '../../redux/notification/notification.actions'
8
 
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
 
22
  const { register, handleSubmit, setValue, errors } = useForm()
23
 
24
  const onSubmit = handleSubmit(({ description }) => {
1979 stevensc 25
    const formData = new FormData()
26
    formData.append('description', description)
5 stevensc 27
 
1979 stevensc 28
    axios
29
      .post(url, formData)
30
      .then((response) => {
31
        const { data, success } = response.data
5 stevensc 32
 
1979 stevensc 33
        if (!success) {
34
          const errorMessage =
35
            typeof data === 'string'
36
              ? data
37
              : 'Error interno. Por favor, inténtelo de nuevo más tarde.'
5 stevensc 38
 
1979 stevensc 39
          dispatch(addNotification({ style: 'danger', msg: errorMessage }))
40
          return
41
        }
42
 
43
        onComplete(data)
44
        onClose()
45
      })
5 stevensc 46
  })
47
 
48
  useEffect(() => {
49
    register('description', { required: true })
50
  }, [])
51
 
52
  useEffect(() => {
53
    setValue('description', currentAnswer)
54
  }, [currentAnswer])
55
 
56
  return (
1460 stevensc 57
    <Modal
58
      title={
59
        currentAnswer ? labels.my_coach_answer_edit : labels.my_coach_answer_add
60
      }
61
      show={show}
62
      onClose={onClose}
63
      onAccept={onSubmit}
64
    >
65
      <CKEditor
66
        onChange={(e) => setValue('description', e.editor.getData())}
67
        onInstanceReady={(e) => e.editor.setData(currentAnswer)}
68
        config={CKEDITOR_OPTIONS}
69
      />
70
      {errors.description && (
71
        <FormErrorFeedback>{labels.error_field_empty}</FormErrorFeedback>
72
      )}
1979 stevensc 73
 
5 stevensc 74
    </Modal>
75
  )
76
}
77
 
78
export default AnswerModal