Rev 2105 | Rev 2107 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React from 'react'
import { useForm } from 'react-hook-form'
import { useDispatch, useSelector } from 'react-redux'
import { block_options, reasons } from '@app/constants/report'
import { addNotification } from '@app/redux/notification/notification.actions'
import { closeReportModal } from '@app/redux/report/report.actions'
import { sendReport } from '@app/services/reports'
import Modal from '../UI/modal/Modal'
import Input from '../UI/inputs/Input'
import Select from '../UI/inputs/Select'
export default function ReportModal() {
const { showModal, type, reportUrl, onComplete } = useSelector(
(state) => state.report
)
const dispatch = useDispatch()
const { register, errors, getValues, handleSubmit } = useForm({
defaultValues: {
reason: reasons[0].value,
block_user: block_options[1].value,
comment: ''
}
})
const onSubmit = handleSubmit(async () => {
try {
const formData = getValues()
const { success, data } = await sendReport(reportUrl, formData)
if (!success) {
throw new Error(data)
}
if (onComplete) {
onComplete()
}
dispatch(addNotification({ style: 'success', msg: data.message }))
dispatch(closeReportModal())
} catch (error) {
dispatch(addNotification({ style: 'danger', msg: error.message }))
}
})
const closeModal = () => dispatch(closeReportModal())
return (
<Modal
show={showModal}
onClose={closeModal}
title={`Reportar ${type.toLowerCase()}`}
onAccept={onSubmit}
>
<Select
name='reason'
label='Motivo'
options={reasons}
inputRef={register}
error={errors.reason?.message}
defaultValue={reasons[0].value}
/>
<Select
name='block_user'
label='Bloquear a este usuario'
options={block_options}
error={errors.block_user?.message}
defaultValue={block_options[1].value}
/>
<Input
name='comment'
label='Comentario'
placeholder='(Opcional)'
inputRef={register}
error={errors.comment?.message}
/>
</Modal>
)
}