Skip to content

Commit

Permalink
Merge pull request pheralb#14 from d3vcloud/fix-clipboard-safari
Browse files Browse the repository at this point in the history
⚒️ fix: clipboard doesn't work on safari
  • Loading branch information
pheralb committed Aug 7, 2022
2 parents 9356503 + 2fd97da commit 9b4a893
Showing 1 changed file with 26 additions and 7 deletions.
33 changes: 26 additions & 7 deletions src/components/svgInfo.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,33 @@ const downloadSvg = (url?: string) => {
download(url || "");
};


const MIMETYPE = 'text/plain';

// Return content of svg as blob =>
const getSvgContent = async (url: string | undefined, isSupported: boolean) => {
const response = await fetch(url || "");
const content = await response.text();

// It was necessary to use blob because in chrome there were issues with the copy to clipboard
const blob = new Blob([content], { type: MIMETYPE });
return isSupported ? blob : content;
}

// Copy to clipboard =>
const copyToClipboard = (url?: string) => {
fetch(url || "").then((response) => {
response.text().then((content) => {
navigator.clipboard.writeText(content);
toast("Copied to clipboard", ToastTheme);
});
});
const copyToClipboard = async (url?: string) => {
const data = {
[MIMETYPE]: getSvgContent(url, true)
};
try {
const clipboardItem = new ClipboardItem(data);
await navigator.clipboard.write([clipboardItem]);
} catch (error) {
// This section works as a fallback on Firefox
const content = await getSvgContent(url, false) as string;
await navigator.clipboard.writeText(content);
}
toast("Copied to clipboard", ToastTheme);
};

const SVGInfo = (props: SVGCardProps) => {
Expand Down

0 comments on commit 9b4a893

Please sign in to comment.