Rev 6900 | AutorÃa | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useState, useEffect } from 'react'import { axios } from '../../../utils'import { useForm } from 'react-hook-form'import { Button, Modal } from 'react-bootstrap'import { addNotification } from '../../../redux/notification/notification.actions'import { useDispatch, useSelector } from 'react-redux'import EditIcon from '@mui/icons-material/EditOutlined'import IconButton from '@mui/material/IconButton'import Spinner from '../../UI/Spinner'import FormErrorFeedback from '../../UI/FormErrorFeedback'const Privacy = ({groupId = '',privacies = [],privacy: defaultValue = '',onChange = () => null,}) => {const [privacy, setPrivacy] = useState('')const [privacyKey, setPrivacyKey] = useState('')const [isModalOpen, setIsModalOpen] = useState(false)const [loading, setLoading] = useState(false)const labels = useSelector(({ intl }) => intl.labels)const dispatch = useDispatch()const { register, errors, handleSubmit, getValues, setError } = useForm()const handleModalOpen = () => {setIsModalOpen(!isModalOpen)}const onSubmitHandler = async (data) => {setLoading(true)const formData = new FormData()Object.entries(data).map(([key, value]) => formData.append(key, value))await axios.post(`/group/my-groups/privacy/${groupId}`, formData).then((response) => {const { data, success } = response.dataif (!success) {const resError = dataif (resError.constructor.name !== 'Object') {dispatch(addNotification({ style: 'danger', msg: resError }))return}Object.entries(resError).map(([key, value]) => {if (key in getValues()) {setError(key, {type: 'manual',message: Array.isArray(value) ? value[0] : value,})}})return}onChange(data)handleModalOpen()})setLoading(false)}useEffect(() => {axios.get(`/group/my-groups/privacy/${groupId}`).then((response) => {const { data, success } = response.dataif (!success) {return}setPrivacyKey(data)})}, [privacy])useEffect(() => {setPrivacy(defaultValue)}, [defaultValue])return (<><div className="experience__user-card"><div className="card__options-container"><h4>Privacidad</h4><IconButton onClick={handleModalOpen}><EditIcon /></IconButton></div><p>{privacy}</p></div><Modal show={isModalOpen} onHide={handleModalOpen}><Modal.Header closeButton><Modal.Title>Privacidad</Modal.Title></Modal.Header><form onSubmit={handleSubmit(onSubmitHandler)}><Modal.Body><selectname="privacy"id="privacy"defaultValue={privacyKey}ref={register({required: 'Por favor eliga una privacidad',})}><option value="" hidden>Privacidad</option>{privacies &&Object.entries(privacies).map(([key, value]) => (<option value={key} key={key}>{value}</option>))}</select>{errors.privacy && (<FormErrorFeedback>{errors.privacy.message}</FormErrorFeedback>)}{loading && <Spinner />}</Modal.Body><Modal.Footer><Button variant="primary" type="submit">{labels.accept}</Button><Button variant="danger" onClick={handleModalOpen}>{labels.cancel}</Button></Modal.Footer></form></Modal></>)}export default Privacy