Rev 774 | 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 (<button className='feed__action' onClick={handleOnClick} type='button' disabled={disabled}>{children}</button>);};export default ShareController;