Rev 360 | Rev 363 | 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(err);}return data.data;}).catch((err) => {onError(err);throw new Error(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);throw new Error(err);}} else if (window?.AndroidShareHandler) {try {const { title, text, url } = shareData;window.AndroidShareHandler.share(url, title, text);} catch (error) {throw new Error(err);}} else {onNonNativeShare?.();}};return (<buttonclassName="feed__action"onClick={handleOnClick}type="button"disabled={disabled}>{children}</button>);};export default ShareController;