From bf31b1fea0e3caf21ad8f4cb5eda9f282b88f2db Mon Sep 17 00:00:00 2001 From: Anirudh <70373803+techwithanirudh@users.noreply.github.com> Date: Sun, 14 May 2023 18:30:20 +0530 Subject: [PATCH] Msg Clipboard to checkmark (optimistic UX) (#247) * revert unintended package-lock.json change * used default checkmark which is included in project --------- Co-authored-by: Danny Avila <110412045+danny-avila@users.noreply.github.com> --- client/package-lock.json | 2 +- client/src/components/Messages/HoverButtons.jsx | 8 +++++--- client/src/components/Messages/Message.jsx | 9 +++++++-- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/client/package-lock.json b/client/package-lock.json index 3c1cf95a55..c8c0b27d82 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -20257,4 +20257,4 @@ "version": "2.0.4" } } -} +} \ No newline at end of file diff --git a/client/src/components/Messages/HoverButtons.jsx b/client/src/components/Messages/HoverButtons.jsx index 5754aa89f4..f280287e7e 100644 --- a/client/src/components/Messages/HoverButtons.jsx +++ b/client/src/components/Messages/HoverButtons.jsx @@ -1,5 +1,6 @@ import React from 'react'; import Clipboard from '../svg/Clipboard'; +import CheckMark from '../svg/CheckMark'; import EditIcon from '../svg/EditIcon'; import RegenerateIcon from '../svg/RegenerateIcon'; @@ -13,6 +14,7 @@ export default function HoverButtons({ regenerate }) { const { endpoint, jailbreak = false } = conversation; + const [isCopied, setIsCopied] = React.useState(false); const branchingSupported = // azureOpenAI, openAI, chatGPTBrowser support branching, so edit enabled @@ -59,11 +61,11 @@ export default function HoverButtons({ ); diff --git a/client/src/components/Messages/Message.jsx b/client/src/components/Messages/Message.jsx index 3093749bde..70d8081c72 100644 --- a/client/src/components/Messages/Message.jsx +++ b/client/src/components/Messages/Message.jsx @@ -98,8 +98,13 @@ export default function Message({ if (!isSubmitting && !message?.isCreatedByUser) regenerate(message); }; - const copyToClipboard = () => { + const copyToClipboard = (setIsCopied) => { + setIsCopied(true); copy(message?.text); + + setTimeout(() => { + setIsCopied(false); + }, 3000); }; const clickSearchResult = async () => { @@ -217,7 +222,7 @@ export default function Message({ conversation={conversation} enterEdit={() => enterEdit()} regenerate={() => regenerateMessage()} - copyToClipboard={() => copyToClipboard()} + copyToClipboard={copyToClipboard} />