mirror of
https://github.com/DayuanJiang/next-ai-draw-io.git
synced 2026-01-02 22:32:27 +08:00
Fix/clipboard (#189)
* bugfix: clipboard error bug * fix: use try-catch fallback for clipboard API instead of feature detection --------- Co-authored-by: dayuan.jiang <jdy.toh@gmail.com>
This commit is contained in:
@@ -216,9 +216,29 @@ export function ChatMessageDisplay({
|
|||||||
setCopiedMessageId(messageId)
|
setCopiedMessageId(messageId)
|
||||||
setTimeout(() => setCopiedMessageId(null), 2000)
|
setTimeout(() => setCopiedMessageId(null), 2000)
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error("Failed to copy message:", err)
|
// Fallback for non-secure contexts (HTTP) or permission denied
|
||||||
setCopyFailedMessageId(messageId)
|
const textarea = document.createElement("textarea")
|
||||||
setTimeout(() => setCopyFailedMessageId(null), 2000)
|
textarea.value = text
|
||||||
|
textarea.style.position = "fixed"
|
||||||
|
textarea.style.left = "-9999px"
|
||||||
|
textarea.style.opacity = "0"
|
||||||
|
document.body.appendChild(textarea)
|
||||||
|
|
||||||
|
try {
|
||||||
|
textarea.select()
|
||||||
|
const success = document.execCommand("copy")
|
||||||
|
if (!success) {
|
||||||
|
throw new Error("Copy command failed")
|
||||||
|
}
|
||||||
|
setCopiedMessageId(messageId)
|
||||||
|
setTimeout(() => setCopiedMessageId(null), 2000)
|
||||||
|
} catch (fallbackErr) {
|
||||||
|
console.error("Failed to copy message:", fallbackErr)
|
||||||
|
setCopyFailedMessageId(messageId)
|
||||||
|
setTimeout(() => setCopyFailedMessageId(null), 2000)
|
||||||
|
} finally {
|
||||||
|
document.body.removeChild(textarea)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user