diff --git a/src/lib/components/chat/Messages.svelte b/src/lib/components/chat/Messages.svelte index 892777662..2da91c50f 100644 --- a/src/lib/components/chat/Messages.svelte +++ b/src/lib/components/chat/Messages.svelte @@ -12,6 +12,7 @@ import Placeholder from './Messages/Placeholder.svelte'; import Spinner from '../common/Spinner.svelte'; import { imageGenerations } from '$lib/apis/images'; + import { copyToClipboard } from '$lib/utils'; const i18n = getContext('i18n'); @@ -42,40 +43,11 @@ element.scrollTop = element.scrollHeight; }; - const copyToClipboard = (text) => { - if (!navigator.clipboard) { - var textArea = document.createElement('textarea'); - textArea.value = text; - - // Avoid scrolling to bottom - textArea.style.top = '0'; - textArea.style.left = '0'; - textArea.style.position = 'fixed'; - - document.body.appendChild(textArea); - textArea.focus(); - textArea.select(); - - try { - var successful = document.execCommand('copy'); - var msg = successful ? 'successful' : 'unsuccessful'; - console.log('Fallback: Copying text command was ' + msg); - } catch (err) { - console.error('Fallback: Oops, unable to copy', err); - } - - document.body.removeChild(textArea); - return; + const copyToClipboardWithToast = async (text) => { + const res = await copyToClipboard(text); + if (res) { + toast.success($i18n.t('Copying to clipboard was successful!')); } - navigator.clipboard.writeText(text).then( - function () { - console.log('Async: Copying to clipboard was successful!'); - toast.success($i18n.t('Copying to clipboard was successful!')); - }, - function (err) { - console.error('Async: Could not copy text: ', err); - } - ); }; const confirmEditMessage = async (messageId, content) => { @@ -330,7 +302,7 @@ {confirmEditMessage} {showPreviousMessage} {showNextMessage} - {copyToClipboard} + copyToClipboard={copyToClipboardWithToast} /> {:else} { diff --git a/src/lib/components/chat/ShareChatModal.svelte b/src/lib/components/chat/ShareChatModal.svelte index 4fa98947d..1ef2d834e 100644 --- a/src/lib/components/chat/ShareChatModal.svelte +++ b/src/lib/components/chat/ShareChatModal.svelte @@ -10,17 +10,18 @@ import Link from '../icons/Link.svelte'; let chat = null; + let shareUrl = null; const i18n = getContext('i18n'); const shareLocalChat = async () => { const _chat = chat; const sharedChat = await shareChatById(localStorage.token, $chatId); - const chatShareUrl = `${window.location.origin}/s/${sharedChat.id}`; - - toast.success($i18n.t('Copied shared chat URL to clipboard!')); - copyToClipboard(chatShareUrl); + shareUrl = `${window.location.origin}/s/${sharedChat.id}`; + console.log(shareUrl); chat = await getChatById(localStorage.token, $chatId); + + return shareUrl; }; const shareChat = async () => { @@ -131,8 +132,12 @@