Rev 1644 | Rev 1646 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React from 'react'
import { useDispatch, useSelector } from 'react-redux'
import { useForm } from 'react-hook-form'
import { sendReport } from '@app/services/reports'
import { addNotification } from '@app/redux/notification/notification.actions'
import { closeReportModal } from '@app/redux/report/report.actions'
import Form from '../UI/form/Form'
import FormInputText from '../UI/form/FormInputText'
import SelectInput from '../UI/form/SelectField'
import Modal from '../UI/modal/Modal'
const reasons = [
{
name: 'Contenido sexual',
value: 's'
},
{
name: 'Contenido ofensivo',
value: 'o'
},
{
name: 'Discriminación',
value: 'd'
},
{
name: 'Adicciones',
value: 'a'
},
{
name: 'Terrorismo',
value: 't'
},
{
name: 'Otro',
value: 'ot'
}
]
const block_options = [
{
name: 'Sí',
value: 'y'
},
{
name: 'No',
value: 'n'
}
]
export default function ReportModal() {
const { showModal, type, reportUrl, onComplete } = useSelector(
(state) => state.report
)
const dispatch = useDispatch()
const { control, errors, handleSubmit } = useForm()
const onSubmit = handleSubmit(async (formData) => {
try {
const { success, data } = await sendReport(reportUrl, formData)
if (!success) {
throw new Error(data)
}
onComplete()
dispatch(addNotification({ style: 'success', msg: data }))
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()}`}
>
<Form onSubmit={onSubmit} autoComplete='off'>
<SelectInput
id='reason'
name='reason'
label='Motivo'
options={reasons}
control={control}
error={errors.reason?.message}
rules={{ required: true }}
/>
<SelectInput
id='block_user'
name='block_user'
label='Bloquear a este usuario'
options={block_options}
control={control}
error={errors.block_user?.message}
rules={{ required: true }}
/>
<FormInputText
name='comment'
control={control}
rules={{ required: false }}
/>
</Form>
</Modal>
)
}