From eb69120812592e9c213efae2df3080bbe277a503 Mon Sep 17 00:00:00 2001 From: L-Ryland Date: Tue, 25 Apr 2023 13:06:00 +0800 Subject: [PATCH 1/4] feat(Folder): name prompt add name prompt for new folder creation add selected state on latest folder expand fold new conversation in to selected folder if there is one --- components/Chatbar/Chatbar.tsx | 8 +++++++- components/Folder/Folder.tsx | 20 +++++++++++++++++--- pages/api/home/home.state.tsx | 2 ++ pages/api/home/home.tsx | 3 ++- 4 files changed, 28 insertions(+), 5 deletions(-) diff --git a/components/Chatbar/Chatbar.tsx b/components/Chatbar/Chatbar.tsx index 300fb21da2..c09771b01b 100644 --- a/components/Chatbar/Chatbar.tsx +++ b/components/Chatbar/Chatbar.tsx @@ -186,6 +186,12 @@ export const Chatbar = () => { } }; + const beforeCreate = () => { + const folderName = prompt(t('Enter folder name: ') || "", t('New folder') || "") + if (folderName) + handleCreateFolder(folderName, 'chat') + } + useEffect(() => { if (searchTerm) { chatDispatch({ @@ -232,7 +238,7 @@ export const Chatbar = () => { } toggleOpen={handleToggleChatbar} handleCreateItem={handleNewConversation} - handleCreateFolder={() => handleCreateFolder(t('New folder'), 'chat')} + handleCreateFolder={beforeCreate} handleDrop={handleDrop} footerComponent={} /> diff --git a/components/Folder/Folder.tsx b/components/Folder/Folder.tsx index 183261e009..ac532068c6 100644 --- a/components/Folder/Folder.tsx +++ b/components/Folder/Folder.tsx @@ -11,6 +11,7 @@ import { ReactElement, useContext, useEffect, + useMemo, useState, } from 'react'; @@ -33,13 +34,26 @@ const Folder = ({ handleDrop, folderComponent, }: Props) => { - const { handleDeleteFolder, handleUpdateFolder } = useContext(HomeContext); + const { + handleDeleteFolder, + handleUpdateFolder, + dispatch: homeDispatch, + state: { selectedFolder }, + } = useContext(HomeContext); const [isDeleting, setIsDeleting] = useState(false); const [isRenaming, setIsRenaming] = useState(false); const [renameValue, setRenameValue] = useState(''); const [isOpen, setIsOpen] = useState(false); + const isFolderSelected = useMemo(() => currentFolder.id === selectedFolder?.id, [currentFolder, selectedFolder]) + + const handleSelect = () => { + setIsOpen(!isOpen); + const selectedFolder = isOpen ? undefined : currentFolder + homeDispatch({ field: 'selectedFolder', value: selectedFolder }); + }; + const handleEnterDown = (e: KeyboardEvent) => { if (e.key === 'Enter') { e.preventDefault(); @@ -112,8 +126,8 @@ const Folder = ({ ) : (