Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 4794 | Rev 4796 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
4309 stevensc 1
/* eslint-disable react/display-name */
2
import React, { useState } from "react"
3
import { useDispatch } from "react-redux"
4
import { EmailIcon, EmailShareButton, FacebookIcon, FacebookShareButton, RedditIcon, RedditShareButton, TelegramIcon, TelegramShareButton, TwitterIcon, TwitterShareButton, WhatsappIcon, WhatsappShareButton } from "react-share"
5
import { addNotification } from "../../../../redux/notification/notification.actions"
6
import { axios } from "../../../../utils"
7
 
8
export default function withExternalShare(Component, url, params) {
9
    return function () {
10
        const dispatch = useDispatch()
11
        const [shareOptions, setShareOptions] = useState(false)
12
        const [shareUrl, setShareUrl] = useState('');
13
 
14
        const handleDisplayReactionList = () => setShareOptions(!shareOptions)
15
 
16
        const getShareUrl = new Promise((resolve, reject) => {
17
            if (shareOptions) {
18
                axios.get(url)
19
                    .then(({ data }) => {
20
                        if (!data.success) {
21
                            dispatch(addNotification({ style: 'danger', msg: data.data }))
22
                            setShareOptions(false)
23
                            return reject(data.data)
24
                        }
4792 stevensc 25
 
26
                        return resolve(setShareUrl(data.data))
4309 stevensc 27
                    })
28
                    .catch((err) => reject(err))
29
            }
4792 stevensc 30
        })
4309 stevensc 31
 
4795 stevensc 32
        const handleClose = () => console.log('Counter ' + 2)
4792 stevensc 33
 
4309 stevensc 34
        return (
4626 stevensc 35
            <div className="position-relative d-inline-flex" onClick={handleDisplayReactionList} style={{ flexGrow: 1 }}>
4309 stevensc 36
                <Component {...params} />
37
                {shareOptions &&
38
                    <div className="external__share" >
4794 stevensc 39
                        <FacebookShareButton beforeOnClick={() => getShareUrl} url={shareUrl} onShareWindowClose={()=> handleClose()}>
4309 stevensc 40
                            <FacebookIcon size={32} round />
41
                        </FacebookShareButton>
42
                        <TwitterShareButton beforeOnClick={() => getShareUrl} url={shareUrl}>
43
                            <TwitterIcon size={32} round />
44
                        </TwitterShareButton>
45
                        <TelegramShareButton beforeOnClick={() => getShareUrl} url={shareUrl}>
46
                            <TelegramIcon size={32} round />
47
                        </TelegramShareButton>
48
                        <WhatsappShareButton beforeOnClick={() => getShareUrl} url={shareUrl}>
49
                            <WhatsappIcon size={32} round />
50
                        </WhatsappShareButton>
51
                        <RedditShareButton beforeOnClick={() => getShareUrl} url={shareUrl}>
52
                            <RedditIcon size={32} round />
53
                        </RedditShareButton>
54
                        <EmailShareButton beforeOnClick={() => getShareUrl} url={shareUrl}>
55
                            <EmailIcon size={32} round />
56
                        </EmailShareButton>
57
                    </div>
58
                }
59
            </div>
60
        )
61
    }
62
}