Skip to content

Commit

Permalink
fix(useClipboard): fix lint warning
Browse files Browse the repository at this point in the history
  • Loading branch information
komagic committed Sep 30, 2024
1 parent 47d081f commit 28718ac
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 35 deletions.
2 changes: 1 addition & 1 deletion packages/hooks/use-clipboard/__tests__/clipboard.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ describe("UseClipboard", () => {
expect(document.execCommand).toHaveBeenCalledWith("copy");
// Ensure that the copied state is set to true
expect(result.current.copied).toBe(true);
jest.advanceTimersByTime(1000);
jest.advanceTimersByTime(1000);
expect(result.current.copied).toBe(false);
});
});
71 changes: 37 additions & 34 deletions packages/hooks/use-clipboard/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,42 +33,45 @@ export function useClipboard({timeout = 2000}: UseClipboardProps = {}) {
[onClearTimeout, timeout],
);

const compatibilityCopy = useCallback((text: string) => {
const input = document.createElement("input");
input.setAttribute("value", text);
input.style.position = "absolute";
input.style.left = "-9999px";
document.body.appendChild(input);
input.select();
try {
let result = document.execCommand("copy");
handleCopyResult(result);
} catch (err) {
setCopied(false);
setError(new Error("useClipboard: document.execCommand is not supported"));
}
document.body.removeChild(input);
},
[handleCopyResult],
);
const compatibilityCopy = useCallback(
(text: string) => {
const input = document.createElement("input");

const copy = useCallback((valueToCopy: any) => {
if ("clipboard" in navigator) {
navigator.clipboard
.writeText(valueToCopy)
.then(() => handleCopyResult(true))
.catch((err) => {
setError(err);
compatibilityCopy(valueToCopy);
});
} else {
setError(new Error("useClipboard: navigator.clipboard is not supported"));
compatibilityCopy(valueToCopy);
}
},
[handleCopyResult,compatibilityCopy],
);
input.setAttribute("value", text);
input.style.position = "absolute";
input.style.left = "-9999px";
document.body.appendChild(input);
input.select();
try {
let result = document.execCommand("copy");

handleCopyResult(result);
} catch (err) {
setCopied(false);
setError(new Error("useClipboard: document.execCommand is not supported"));
}
document.body.removeChild(input);
},
[handleCopyResult],
);

const copy = useCallback(
(valueToCopy: any) => {
if ("clipboard" in navigator) {
navigator.clipboard
.writeText(valueToCopy)
.then(() => handleCopyResult(true))
.catch((err) => {
setError(err);
compatibilityCopy(valueToCopy);
});
} else {
setError(new Error("useClipboard: navigator.clipboard is not supported"));
compatibilityCopy(valueToCopy);
}
},
[handleCopyResult, compatibilityCopy],
);

const reset = useCallback(() => {
setCopied(false);
Expand Down

0 comments on commit 28718ac

Please sign in to comment.