From 7081b9513e4c8527f24b9d25829095a4918eb8d5 Mon Sep 17 00:00:00 2001 From: Lucy Date: Fri, 3 Jun 2022 19:20:29 +0000 Subject: [PATCH 1/3] fix: add copy fallback for insecure contexts --- site/src/components/CopyButton/CopyButton.tsx | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/site/src/components/CopyButton/CopyButton.tsx b/site/src/components/CopyButton/CopyButton.tsx index 80b53d1a7e413..49540ee1b2a83 100644 --- a/site/src/components/CopyButton/CopyButton.tsx +++ b/site/src/components/CopyButton/CopyButton.tsx @@ -29,16 +29,25 @@ export const CopyButton: React.FC = ({ try { await window.navigator.clipboard.writeText(text) setIsCopied(true) - window.setTimeout(() => { setIsCopied(false) }, 1000) } catch (err) { - const wrappedErr = new Error("copyToClipboard: failed to copy text to clipboard") - if (err instanceof Error) { - wrappedErr.stack = err.stack + const input = document.createElement("input") + input.hidden = true + input.value = text + document.body.appendChild(input) + input.focus() + input.select() + const result = document.execCommand("copy") + document.body.removeChild(input) + if (!result) { + const wrappedErr = new Error("copyToClipboard: failed to copy text to clipboard") + if (err instanceof Error) { + wrappedErr.stack = err.stack + } + console.error(wrappedErr) } - console.error(wrappedErr) } } From 2ee9f80362fb411681f045216f66d22fef8ccbca Mon Sep 17 00:00:00 2001 From: Lucy Satheesan Date: Thu, 23 Jun 2022 15:55:25 -0400 Subject: [PATCH 2/3] fixup! unhide input, add feedback --- site/src/components/CopyButton/CopyButton.tsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/site/src/components/CopyButton/CopyButton.tsx b/site/src/components/CopyButton/CopyButton.tsx index 49540ee1b2a83..0b69ef24d4553 100644 --- a/site/src/components/CopyButton/CopyButton.tsx +++ b/site/src/components/CopyButton/CopyButton.tsx @@ -34,14 +34,18 @@ export const CopyButton: React.FC = ({ }, 1000) } catch (err) { const input = document.createElement("input") - input.hidden = true input.value = text document.body.appendChild(input) input.focus() input.select() const result = document.execCommand("copy") document.body.removeChild(input) - if (!result) { + if (result) { + setIsCopied(true) + window.setTimeout(() => { + setIsCopied(false) + }, 1000) + } else { const wrappedErr = new Error("copyToClipboard: failed to copy text to clipboard") if (err instanceof Error) { wrappedErr.stack = err.stack From bcaac3e696077d6be83eecb5b3480fbc96a84166 Mon Sep 17 00:00:00 2001 From: Lucy Satheesan Date: Thu, 23 Jun 2022 16:04:13 -0400 Subject: [PATCH 3/3] fixup! re-CI