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;