Rev 3156 | AutorÃa | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useEffect, useState } from 'react';import { useDispatch } from 'react-redux';import { axios } from '@app/utils';import { addNotification } from '@app/redux/notification/notification.actions';import Modal from '@app/components/UI/modal/Modal';import Input from '@app/components/UI/inputs/Input';import Button from '@app/components/UI/buttons/Buttons';const SharePopup = ({ shareData, onClose, onError, show }) => {const [shareUrl, setShareUrl] = useState('');const [state, setState] = useState('pending');const dispatch = useDispatch();const getShareUrl = (url = '') => {axios.get(url).then(({ data }) => {if (!data.success) {throw new Error(data.data);}setShareUrl(data.data);}).catch((error) => {onError(error);dispatch(addNotification({ style: 'danger', msg: error.message }));});};const copyClicked = async () => {try {await navigator.clipboard.writeText(shareUrl || '');setState('success');} catch (err) {onError && onError(err);setState('error');}};const getButtonText = (state) => {switch (state) {case 'success':return 'URL Copiada al portapapeles';case 'pending':default:return 'Copiar URL';}};useEffect(() => {if (show) {getShareUrl(shareData?.url);}}, [shareData, show]);return (<Modal show={show} onClose={onClose}><Inputvalue={shareUrl}readOnlyerror={state === 'error'? 'No se pudo copiar al portapapeles, por favor copia la url manualmente para compartir.': null}/><Button color='primary' onClick={copyClicked}>{getButtonText(state)}</Button></Modal>);};export default SharePopup;