Rev 364 | Rev 1442 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useEffect, useState } from 'react'import { axios } from '../../../../utils'import { Modal } from 'react-bootstrap'import { useDispatch } from 'react-redux'import { addNotification } from '../../../../redux/notification/notification.actions'import FormErrorFeedback from '../../../UI/form/FormErrorFeedback'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) {dispatch(addNotification({ style: 'danger', msg: data.data }))return}setShareUrl(data.data)}).catch((err) => {onError(err)throw new Error(err)})}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} onHide={onClose} centered><Modal.Header closeButton /><Modal.Body>{state === 'error' ? (<FormErrorFeedback>No se pudo copiar al portapapeles, por favor copia la urlmanualmente para compartir.</FormErrorFeedback>) : null}<input className='form-control' type='text' value={shareUrl} readOnly /><button className='btn btn-primary mt-3' onClick={copyClicked}>{getButtonText(state)}</button></Modal.Body></Modal>)}export default SharePopup