summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ollama_web/static/app.js26
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();