Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 2521 | Rev 3269 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

import React, { useEffect } from 'react'
import { useDispatch, useSelector } from 'react-redux'
import { useForm } from 'react-hook-form'

import { axios } from 'utils/index'
import { addNotification } from '../../redux/notification/notification.actions'

import CKEditor from '@app/components/UI/Ckeditor'
import Modal from 'components/UI/modal/Modal'
import FormErrorFeedback from 'components/UI/form/FormErrorFeedback'

const AnswerModal = ({
  show = false,
  currentAnswer = '',
  url = '',
  onClose = () => null,
  onComplete = () => null
}) => {
  const labels = useSelector(({ intl }) => intl.labels)
  const dispatch = useDispatch()

  const {
    register,
    handleSubmit,
    setValue,
    formState: { errors }
  } = useForm()

  const onSubmit = handleSubmit(({ description }) => {
    const formData = new FormData()
    formData.append('description', description)

    axios.post(url, formData).then((response) => {
      const { data, success } = response.data

      if (!success) {
        const errorMessage =
          typeof data === 'string'
            ? data
            : 'Error interno. Por favor, inténtelo de nuevo más tarde.'

        dispatch(addNotification({ style: 'danger', msg: errorMessage }))
        return
      }

      onComplete(data)
      onClose()
    })
  })

  useEffect(() => {
    register('description', { required: true })
  }, [])

  useEffect(() => {
    setValue('description', currentAnswer)
  }, [currentAnswer])

  return (
    <Modal
      title={
        currentAnswer ? labels.my_coach_answer_edit : labels.my_coach_answer_add
      }
      show={show}
      onClose={onClose}
      onAccept={onSubmit}
    >
      <CKEditor
        defaultValue={currentAnswer}
        onChange={(value) => setValue('description', value)}
      />
      {errors.description && (
        <FormErrorFeedback>{labels.error_field_empty}</FormErrorFeedback>
      )}
    </Modal>
  )
}

export default AnswerModal