Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 1979 | 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
 
2521 stevensc 8
import CKEditor from '@app/components/UI/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
 
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
 
2521 stevensc 28
    axios.post(url, formData).then((response) => {
29
      const { data, success } = response.data
5 stevensc 30
 
2521 stevensc 31
      if (!success) {
32
        const errorMessage =
33
          typeof data === 'string'
34
            ? data
35
            : 'Error interno. Por favor, inténtelo de nuevo más tarde.'
5 stevensc 36
 
2521 stevensc 37
        dispatch(addNotification({ style: 'danger', msg: errorMessage }))
38
        return
39
      }
1979 stevensc 40
 
2521 stevensc 41
      onComplete(data)
42
      onClose()
43
    })
5 stevensc 44
  })
45
 
46
  useEffect(() => {
47
    register('description', { required: true })
48
  }, [])
49
 
50
  useEffect(() => {
51
    setValue('description', currentAnswer)
52
  }, [currentAnswer])
53
 
54
  return (
1460 stevensc 55
    <Modal
56
      title={
57
        currentAnswer ? labels.my_coach_answer_edit : labels.my_coach_answer_add
58
      }
59
      show={show}
60
      onClose={onClose}
61
      onAccept={onSubmit}
62
    >
63
      <CKEditor
2521 stevensc 64
        defaultValue={currentAnswer}
65
        onChange={(value) => setValue('description', value)}
1460 stevensc 66
      />
67
      {errors.description && (
68
        <FormErrorFeedback>{labels.error_field_empty}</FormErrorFeedback>
69
      )}
5 stevensc 70
    </Modal>
71
  )
72
}
73
 
74
export default AnswerModal