From fd2775e32ab8497b07b51a337f42ab30b58d0507 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sat, 25 Oct 2025 11:51:44 -0600 Subject: [PATCH] feat(copy-logs): simplify clipboard copy functionality using copy-to-clipboard library --- .../application/deployments/show-deployment.tsx | 16 ++++------------ .../dashboard/docker/logs/docker-logs-id.tsx | 16 ++++------------ 2 files changed, 8 insertions(+), 24 deletions(-) diff --git a/apps/dokploy/components/dashboard/application/deployments/show-deployment.tsx b/apps/dokploy/components/dashboard/application/deployments/show-deployment.tsx index 69907c473..0d403ecd2 100644 --- a/apps/dokploy/components/dashboard/application/deployments/show-deployment.tsx +++ b/apps/dokploy/components/dashboard/application/deployments/show-deployment.tsx @@ -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); } diff --git a/apps/dokploy/components/dashboard/docker/logs/docker-logs-id.tsx b/apps/dokploy/components/dashboard/docker/logs/docker-logs-id.tsx index 529fc809b..bf0173956 100644 --- a/apps/dokploy/components/dashboard/docker/logs/docker-logs-id.tsx +++ b/apps/dokploy/components/dashboard/docker/logs/docker-logs-id.tsx @@ -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 = ({ ) .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); }