Rev 4638 | AutorÃa | Comparar con el anterior | Ultima modificación | Ver Log |
import React from "react";import { useState, useEffect } from "react";import { Button, Modal } from "react-bootstrap";import { useForm } from "react-hook-form";import styled from "styled-components";import { axios } from "../../../../../../../utils";import FormErrorFeedback from "../../../../../../../shared/form-error-feedback/FormErrorFeedback";import Spinner from "../../../../../../../shared/loading-spinner/Spinner";import EditIcon from '@mui/icons-material/EditOutlined'const StyledSpinnerContainer = styled.div`position: absolute;left: 0;top: 0;width: 100%;height: 100%;background: rgba(255, 255, 255, 0.4);display: flex;justify-content: center;align-items: center;z-index: 300;`;const Privacy = (props) => {// props destructuringconst { groupId, addNotification, privacies, settedPrivacy, setSettedPrivacy, setSettedAccesibility } = props;// react hook formconst {register,errors,handleSubmit,setValue,clearErrors,getValues,setError,} = useForm();// statesconst [isModalOpen, setIsModalOpen] = useState(false);const [loading, setLoading] = useState(false);const [settedPrivacyKey, setSettedPrivacyKey] = useState("");const handleModalOpen = (event) => {event && event.preventDefault();setIsModalOpen(!isModalOpen);};useEffect(() => {axios.get(`/group/my-groups/privacy/${groupId}`).then((response) => {const resData = response.data;(resData);if (resData.success) {if (resData.data) setSettedPrivacyKey(resData.data);}});}, [settedPrivacy]);const onSubmitHandler = async (data) => {// profile/my-profiles/extended', [ 'id' => $user_profile_id_encrypted]// https://leaderslinked.com/profile/my-profiles/extended/MzU4NDg3ODcgsetLoading(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(async ({ data }) => {if (data.success) {setSettedPrivacy(data.data);handleModalOpen();if (data.data === 'Privado') {const accessibilityData = new FormData()accessibilityData.append('accessibility', 'aa')const { data } = await axios.post(`/group/my-groups/accessibility/${groupId}`, accessibilityData)data.success && setSettedAccesibility(data.data)}} else {const resError = data.data;if (resError.constructor.name === "Object") {Object.entries(resError).map(([key, value]) => {if (key in getValues()) {setError(key, {type: "manual",message: Array.isArray(value) ? value[0] : value,});}});} else {addNotification({style: "danger",msg: resError,});}}});setLoading(false);};return (<React.Fragment><div className="experience__user-card"><div className="card__options-container"><h4>Privacidad</h4><button className='button-icon' onClick={handleModalOpen}><EditIcon /></button></div><p>{settedPrivacy}</p></div>{/* modal */}<Modalshow={isModalOpen}onHide={handleModalOpen}style={{ overflowY: "scroll" }}><Modal.Header closeButton><Modal.Title>Privacidad</Modal.Title></Modal.Header><form onSubmit={handleSubmit(onSubmitHandler)}><Modal.Body><selectname="privacy"id="privacy"defaultValue={settedPrivacyKey ? settedPrivacyKey : ""}ref={register({required: "Por favor eliga una privacidad",})}><option value="" hidden>Privacidad</option>{Object.entries(privacies).map(([key, value]) => (<option value={key} key={key}>{value}</option>))}</select>{errors.privacy && (<FormErrorFeedback>{errors.privacy.message}</FormErrorFeedback>)}</Modal.Body><Modal.Footer><Button type="submit">Enviar</Button><Button variant="danger" onClick={handleModalOpen}>Cancelar</Button></Modal.Footer></form>{loading && (<StyledSpinnerContainer><Spinner /></StyledSpinnerContainer>)}</Modal></React.Fragment>);};export default Privacy;