feat(copy-logs): simplify clipboard copy functionality using copy-to-clipboard library

This commit is contained in:
Mauricio Siu
2025-10-25 11:51:44 -06:00
parent 51003276bc
commit fd2775e32a
2 changed files with 8 additions and 24 deletions

View File

@@ -1,3 +1,4 @@
import copy from "copy-to-clipboard";
import { Check, Copy, Loader2 } from "lucide-react";
import { useEffect, useRef, useState } from "react";
import { Badge } from "@/components/ui/badge";
@@ -108,24 +109,15 @@ export const ShowDeployment = ({
}
}, [filteredLogs, autoScroll]);
const handleCopy = async () => {
const handleCopy = () => {
const logContent = filteredLogs
.map(({ timestamp, message }: LogLine) =>
`${timestamp?.toISOString() || ""} ${message}`.trim(),
)
.join("\n");
try {
await navigator.clipboard.writeText(logContent);
setCopied(true);
setTimeout(() => setCopied(false), 2000);
} catch {
const textarea = document.createElement("textarea");
textarea.value = logContent;
document.body.appendChild(textarea);
textarea.select();
document.execCommand("copy");
document.body.removeChild(textarea);
const success = copy(logContent);
if (success) {
setCopied(true);
setTimeout(() => setCopied(false), 2000);
}

View File

@@ -1,7 +1,8 @@
import copy from "copy-to-clipboard";
import {
Download as DownloadIcon,
Check,
Copy,
Download as DownloadIcon,
Loader2,
Pause,
Play,
@@ -261,17 +262,8 @@ export const DockerLogsId: React.FC<Props> = ({
)
.join("\n");
try {
await navigator.clipboard.writeText(logContent);
setCopied(true);
setTimeout(() => setCopied(false), 2000);
} catch {
const textarea = document.createElement("textarea");
textarea.value = logContent;
document.body.appendChild(textarea);
textarea.select();
document.execCommand("copy");
document.body.removeChild(textarea);
const success = copy(logContent);
if (success) {
setCopied(true);
setTimeout(() => setCopied(false), 2000);
}