Rev 348 | Rev 354 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useState } from "react";
import styles from "./MobileSharePopUp.module.scss";
const SharePopup = ({ shareData, onClose, onError }) => {
const [state, setState] = useState("pending");
const getShareUrl = async (url = "") => {
await axios
.get(url)
.then(({ data }) => {
if (!data.success) {
dispatch(addNotification({ style: "danger", msg: data.data }));
return;
}
return data.data;
})
.catch((err) => {
onError(err);
throw new Error(err);
});
};
const copyClicked = async () => {
try {
const shareUrl = await getShareUrl(shareData.url);
await navigator.clipboard.writeText(shareUrl || "");
setState("success");
} catch (err) {
onError && onError(err);
setState("error");
}
};
const getButtonText = (state) => {
switch (state) {
case "success":
return "Link copied";
case "pending":
default:
return "Copy link";
}
};
return (
<div className={styles.share__popup}>
<div>
<h3>{shareData.title}</h3>
<button onClick={onClose}>
<span>Close Share</span>
<div aria-hidden="true">
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
>
<g id="close">
<path
id="x"
d="M18.717 6.697l-1.414-1.414-5.303 5.303-5.303-5.303-1.414 1.414 5.303 5.303-5.303 5.303 1.414 1.414 5.303-5.303 5.303 5.303 1.414-1.414-5.303-5.303z"
/>
</g>
</svg>
</div>
</button>
</div>
<div>
{state === "error" ? (
<div>
<p>
Unable to copy to clipboard, please manually copy the url to
share.
</p>
</div>
) : null}
<input value={shareData.url} readOnly />
<button onClick={copyClicked}>{getButtonText(state)}</button>
</div>
</div>
);
};
export default SharePopup;