From 49b15d350969808dcd362c2786d3683297b7bd32 Mon Sep 17 00:00:00 2001 From: steven Date: Tue, 25 Apr 2023 15:12:36 +0800 Subject: [PATCH] feat: add clear conversation buttion --- src/components/ClearConversationButton.tsx | 27 +++++++++++++ .../ClearConversationConfirmModal.tsx | 39 +++++++++++++++++++ .../ConversationView/MessageTextarea.tsx | 2 +- src/components/ConversationView/index.tsx | 4 +- src/components/Icon.tsx | 2 + 5 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 src/components/ClearConversationButton.tsx create mode 100644 src/components/ClearConversationConfirmModal.tsx diff --git a/src/components/ClearConversationButton.tsx b/src/components/ClearConversationButton.tsx new file mode 100644 index 0000000..8f941e0 --- /dev/null +++ b/src/components/ClearConversationButton.tsx @@ -0,0 +1,27 @@ +import { useState } from "react"; +import { useConversationStore, useMessageStore } from "@/store"; +import Icon from "./Icon"; +import ClearConversationConfirmModal from "./ClearConversationConfirmModal"; + +const ClearConversationButton = () => { + const conversationStore = useConversationStore(); + const messageStore = useMessageStore(); + const [showConfirmModal, setShowConfirmModal] = useState(false); + const messageList = messageStore.messageList.filter((message) => message.conversationId === conversationStore.currentConversationId); + + return ( + <> + + + {showConfirmModal && setShowConfirmModal(false)} />} + + ); +}; + +export default ClearConversationButton; diff --git a/src/components/ClearConversationConfirmModal.tsx b/src/components/ClearConversationConfirmModal.tsx new file mode 100644 index 0000000..d7be483 --- /dev/null +++ b/src/components/ClearConversationConfirmModal.tsx @@ -0,0 +1,39 @@ +import { useTranslation } from "react-i18next"; +import { useConversationStore, useMessageStore } from "@/store"; +import Modal from "./kit/Modal"; + +interface Props { + close: () => void; +} + +const ClearConversationConfirmModal = (props: Props) => { + const { close } = props; + const { t } = useTranslation(); + const conversationStore = useConversationStore(); + const messageStore = useMessageStore(); + + const handleClearMessages = () => { + messageStore.clearMessage((item) => item.conversationId !== conversationStore.currentConversationId); + close(); + }; + + return ( + +
+
+

Are you sure to clear the messages in current conversation?

+
+
+ + +
+
+
+ ); +}; + +export default ClearConversationConfirmModal; diff --git a/src/components/ConversationView/MessageTextarea.tsx b/src/components/ConversationView/MessageTextarea.tsx index 51571d8..faa6340 100644 --- a/src/components/ConversationView/MessageTextarea.tsx +++ b/src/components/ConversationView/MessageTextarea.tsx @@ -73,7 +73,7 @@ const MessageTextarea = (props: Props) => { }; return ( -
+
{ messageList.map((message) => ) )}
-
+
+
diff --git a/src/components/Icon.tsx b/src/components/Icon.tsx index f5ddd80..5b2bb89 100644 --- a/src/components/Icon.tsx +++ b/src/components/Icon.tsx @@ -3,6 +3,7 @@ import * as Bi from "react-icons/bi"; import * as Bs from "react-icons/bs"; import * as Di from "react-icons/di"; import * as Fi from "react-icons/fi"; +import * as Gi from "react-icons/gi"; import * as Io from "react-icons/io"; import * as Io5 from "react-icons/io5"; @@ -12,6 +13,7 @@ const Icon = { ...Bs, ...Di, ...Fi, + ...Gi, ...Io, ...Io5, };