diff options
Diffstat (limited to 'src/ollama_web/static/app.js')
| -rw-r--r-- | src/ollama_web/static/app.js | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/src/ollama_web/static/app.js b/src/ollama_web/static/app.js index 54fb2e0..65aa17b 100644 --- a/src/ollama_web/static/app.js +++ b/src/ollama_web/static/app.js @@ -189,14 +189,24 @@ function addMessage(role, rawText, showCopy = false) { copyBtn.setAttribute("aria-label", t("common.copy", "Copy")); copyBtn.textContent = "📋"; copyBtn.hidden = !showCopy; - copyBtn.addEventListener("click", () => { + copyBtn.addEventListener("click", async () => { const raw = div.dataset.rawText || ""; - navigator.clipboard.writeText(raw).then(() => { - copyBtn.textContent = "✓"; - setTimeout(() => { - copyBtn.textContent = "📋"; - }, 1200); - }); + let feedback = "✓"; + + try { + if (!navigator.clipboard?.writeText) { + throw new Error("Clipboard API is unavailable"); + } + await navigator.clipboard.writeText(raw); + } catch (err) { + console.error("failed to copy message", err); + feedback = "⚠"; + } + + copyBtn.textContent = feedback; + setTimeout(() => { + copyBtn.textContent = "📋"; + }, 1200); }); div.appendChild(copyBtn); chatEl.appendChild(div); @@ -959,4 +969,4 @@ function updateTokenGaugeFromSession() { } loadSessions(); -loadModelCapabilities();
\ No newline at end of file +loadModelCapabilities(); |
