Skip to content

Commit 57df7ad

Browse files
authored
Fixed copy to clipboard on insecure (HTTP) URLs (#6605)
1 parent f757e14 commit 57df7ad

File tree

2 files changed

+21
-4
lines changed

2 files changed

+21
-4
lines changed

changelog/6467.fixed.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Resolved an issue where the copy to clipboard did not work on insecure (HTTP) URLs.

frontend/app/src/shared/hooks/useCopyToClipboard.ts

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,31 @@
11
import React from "react";
22

3+
function oldSchoolCopy(text: string) {
4+
const tempTextArea = document.createElement("textarea");
5+
tempTextArea.value = text;
6+
document.body.appendChild(tempTextArea);
7+
tempTextArea.select();
8+
document.execCommand("copy");
9+
document.body.removeChild(tempTextArea);
10+
}
11+
12+
const COPIED_FEEDBACK_DURATION = 2000;
13+
314
export function useCopyToClipboard() {
415
const [isCopied, setIsCopied] = React.useState(false);
516

617
const copyToClipboard = React.useCallback(async (value: string) => {
18+
function confirmCopied() {
19+
setIsCopied(true);
20+
setTimeout(() => setIsCopied(false), COPIED_FEEDBACK_DURATION);
21+
}
22+
723
try {
824
await navigator.clipboard.writeText(value);
9-
setIsCopied(true);
10-
setTimeout(() => setIsCopied(false), 2000); // Reset copied state after 2 seconds
11-
} catch (error) {
12-
console.error("Failed to copy: ", error);
25+
confirmCopied();
26+
} catch {
27+
oldSchoolCopy(value);
28+
confirmCopied();
1329
}
1430
}, []);
1531

0 commit comments

Comments
 (0)