AutorÃa | Ultima modificación | Ver Log |
/* eslint-disable react/display-name */import React, { useEffect, useState } from 'react'import { useDispatch } from 'react-redux'import {EmailIcon,EmailShareButton,FacebookIcon,FacebookShareButton,RedditIcon,RedditShareButton,TelegramIcon,TelegramShareButton,TwitterIcon,TwitterShareButton,WhatsappIcon,WhatsappShareButton,} from 'react-share'import { addNotification } from '../../../../redux/notification/notification.actions'import { axios } from '../../../../utils'export default function withExternalShare(Component, url, params) {return function () {const dispatch = useDispatch()const [shareOptions, setShareOptions] = useState(false)const [shareUrl, setShareUrl] = useState('')const handleDisplayReactionList = () => setShareOptions(!shareOptions)const getShareUrl = async () => {await axios.get(url).then(({ data }) => {if (!data.success) {dispatch(addNotification({ style: 'danger', msg: data.data }))setShareOptions(false)return}setShareUrl(data.data)}).catch((err) => console.log(err))}const incrementCount = async () => {await axios.post(params.shareUrl).then(({ data }) => {if (!data.success) {dispatch(addNotification({ style: 'danger', msg: data.data }))return}setShareOptions(false)params.setValue(data.data)}).catch((err) => console.log(err))}useEffect(() => {if (shareOptions && !shareUrl) getShareUrl()}, [shareOptions])return (<divclassName="position-relative d-inline-flex"onClick={handleDisplayReactionList}style={{ flexGrow: 1 }}><Component {...params} />{shareOptions && (<div className="external__share"><FacebookShareButtonurl={shareUrl}onShareWindowClose={() => incrementCount()}><FacebookIcon size={32} round /></FacebookShareButton><TwitterShareButtonurl={shareUrl}onShareWindowClose={() => incrementCount()}><TwitterIcon size={32} round /></TwitterShareButton><TelegramShareButtonurl={shareUrl}onShareWindowClose={() => incrementCount()}><TelegramIcon size={32} round /></TelegramShareButton><WhatsappShareButtonurl={shareUrl}onShareWindowClose={() => incrementCount()}><WhatsappIcon size={32} round /></WhatsappShareButton><RedditShareButtonurl={shareUrl}onShareWindowClose={() => incrementCount()}><RedditIcon size={32} round /></RedditShareButton><EmailShareButtonurl={shareUrl}onShareWindowClose={() => incrementCount()}><EmailIcon size={32} round /></EmailShareButton></div>)}</div>)}}