From 2c7d816e1a834d783d5e7af5abcad513c8a10617 Mon Sep 17 00:00:00 2001 From: steven Date: Mon, 17 Apr 2023 17:33:20 +0800 Subject: [PATCH] feat: allow update conversation bot in UI --- src/components/ConnectionSidebar.tsx | 31 +++++++++---------- ...eModal.tsx => UpdateConversationModal.tsx} | 30 +++++++++++++++--- src/locales/en.json | 6 +++- src/locales/zh.json | 6 +++- src/store/assistant.ts | 2 +- 5 files changed, 50 insertions(+), 25 deletions(-) rename src/components/{EditConversationTitleModal.tsx => UpdateConversationModal.tsx} (51%) diff --git a/src/components/ConnectionSidebar.tsx b/src/components/ConnectionSidebar.tsx index fd98e8f..7daaa6e 100644 --- a/src/components/ConnectionSidebar.tsx +++ b/src/components/ConnectionSidebar.tsx @@ -13,12 +13,12 @@ import LocaleSwitch from "./LocaleSwitch"; import DarkModeSwitch from "./DarkModeSwitch"; import CreateConnectionModal from "./CreateConnectionModal"; import SettingModal from "./SettingModal"; -import EditConversationTitleModal from "./EditConversationTitleModal"; +import UpdateConversationModal from "./UpdateConversationModal"; interface State { showCreateConnectionModal: boolean; showSettingModal: boolean; - showEditConversationTitleModal: boolean; + showUpdateConversationModal: boolean; } const ConnectionSidebar = () => { @@ -29,10 +29,10 @@ const ConnectionSidebar = () => { const [state, setState] = useState({ showCreateConnectionModal: false, showSettingModal: false, - showEditConversationTitleModal: false, + showUpdateConversationModal: false, }); const [editConnectionModalContext, setEditConnectionModalContext] = useState(); - const [editConversationTitleModalContext, setEditConversationTitleModalContext] = useState(); + const [updateConversationModalContext, setUpdateConversationModalContext] = useState(); const [isRequestingDatabase, setIsRequestingDatabase] = useState(false); const connectionList = connectionStore.connectionList; const currentConnectionCtx = connectionStore.currentConnectionCtx; @@ -88,10 +88,10 @@ const ConnectionSidebar = () => { }); }; - const toggleEditConversationTitleModal = (show = true) => { + const toggleUpdateConversationModal = (show = true) => { setState({ ...state, - showEditConversationTitleModal: show, + showUpdateConversationModal: show, }); }; @@ -139,11 +139,11 @@ const ConnectionSidebar = () => { } }; - const handleEditConversationTitle = (conversation: Conversation) => { - setEditConversationTitleModalContext(conversation); + const handleEditConversation = (conversation: Conversation) => { + setUpdateConversationModalContext(conversation); setState({ ...state, - showEditConversationTitleModal: true, + showUpdateConversationModal: true, }); }; @@ -265,16 +265,16 @@ const ConnectionSidebar = () => {
handleEditConversationTitle(conversation)} + onClick={() => handleEditConversation(conversation)} > - + {t("common.edit")} handleDeleteConversation(conversation)} > - + {t("common.delete")}
@@ -309,11 +309,8 @@ const ConnectionSidebar = () => { {state.showSettingModal && toggleSettingModal(false)} />} - {editConversationTitleModalContext && state.showEditConversationTitleModal && ( - toggleEditConversationTitleModal(false)} - conversation={editConversationTitleModalContext} - /> + {updateConversationModalContext && state.showUpdateConversationModal && ( + toggleUpdateConversationModal(false)} conversation={updateConversationModalContext} /> )} ); diff --git a/src/components/EditConversationTitleModal.tsx b/src/components/UpdateConversationModal.tsx similarity index 51% rename from src/components/EditConversationTitleModal.tsx rename to src/components/UpdateConversationModal.tsx index d38e408..278d327 100644 --- a/src/components/EditConversationTitleModal.tsx +++ b/src/components/UpdateConversationModal.tsx @@ -1,22 +1,31 @@ import { useState } from "react"; import { toast } from "react-hot-toast"; import { useTranslation } from "react-i18next"; -import { useConversationStore } from "@/store"; +import { assistantList, useConversationStore } from "@/store"; import { Conversation } from "@/types"; import TextField from "./kit/TextField"; import Modal from "./kit/Modal"; +import Select from "./kit/Select"; interface Props { conversation: Conversation; close: () => void; } -const EditConversationTitleModal = (props: Props) => { +const UpdateConversationModal = (props: Props) => { const { close, conversation } = props; const { t } = useTranslation(); const conversationStore = useConversationStore(); const [title, setTitle] = useState(conversation.title); + const [assistantId, setAssistantId] = useState(conversation.assistantId); const allowSave = title !== ""; + const assistantItems = assistantList.map((assistant) => { + return { + value: assistant.id, + label: assistant.name, + }; + }); + const currentAssistant = assistantList.find((assistant) => assistant.id === assistantId); const handleSaveEdit = () => { const formatedTitle = title.trim(); @@ -26,16 +35,27 @@ const EditConversationTitleModal = (props: Props) => { conversationStore.updateConversation(conversation.id, { title: formatedTitle, + assistantId: assistantId, }); - toast.success("Conversation title updated"); + toast.success("Conversation updated"); close(); }; return ( - +
+ setTitle(value)} />
+
+ +