Rev 631 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
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) {return function (props) {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(props.shareUrl).then(({ data }) => {if (!data.success) {dispatch(addNotification({ style: "danger", msg: data.data }));return;}setShareOptions(false);props.setValue(data.data);}).catch((err) => console.log(err));};useEffect(() => {if (shareOptions && !shareUrl) getShareUrl();}, [shareOptions]);return (<Component onClick={handleDisplayReactionList} {...props}>{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>)}</Component>);};}