Rev 368 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React from 'react'import { useDispatch } from 'react-redux'import { axios } from '../../../../utils'import { addNotification } from '../../../../redux/notification/notification.actions'const ShareController = ({children,shareData,onInteraction,onSuccess,onError,onNonNativeShare,disabled}) => {const dispatch = useDispatch()const getShareUrl = async (url = '') => {axios.get(url).then(({ data }) => {if (!data.success) {dispatch(addNotification({ style: 'danger', msg: data.data }))throw new Error(data.data)}return data.data}).catch((err) => {onError(err)})}const handleOnClick = async () => {onInteraction?.()if (navigator?.share) {try {const shareUrl = await getShareUrl(shareData.url)await navigator.share({ ...shareData, url: shareUrl })onSuccess?.()} catch (err) {dispatch(addNotification({ style: 'danger', msg: 'Error' }))onError?.(err)}} else if (window?.AndroidShareHandler) {try {window.AndroidShareHandler.share(shareData.url, '', '')} catch (error) {onError?.(error)}} else {onNonNativeShare?.()}}return (<buttonclassName='feed__action'onClick={handleOnClick}type='button'disabled={disabled}>{children}</button>)}export default ShareController