From 867204604b453a8df2a6070cdb60b5079528e6bd Mon Sep 17 00:00:00 2001 From: n4ze3m Date: Sat, 11 Jan 2025 20:58:45 +0530 Subject: [PATCH] feat: Add sidebar chat history and functionality --- src/assets/locale/ar/common.json | 3 +- src/assets/locale/da/common.json | 3 +- src/assets/locale/de/common.json | 3 +- src/assets/locale/en/common.json | 3 +- src/assets/locale/es/common.json | 3 +- src/assets/locale/fa/common.json | 3 +- src/assets/locale/fr/common.json | 3 +- src/assets/locale/it/common.json | 3 +- src/assets/locale/ja-JP/common.json | 3 +- src/assets/locale/ko/common.json | 8 ++-- src/assets/locale/ml/common.json | 3 +- src/assets/locale/no/common.json | 3 +- src/assets/locale/pt-BR/common.json | 3 +- src/assets/locale/ru/common.json | 3 +- src/assets/locale/sv/common.json | 5 ++- src/assets/locale/uk/common.json | 5 ++- src/assets/locale/zh/common.json | 3 +- src/components/Layouts/Layout.tsx | 28 +++++++++++- src/components/Option/Sidebar.tsx | 50 +++++++++++++--------- src/components/Sidepanel/Chat/header.tsx | 54 ++++++++++++++++++++++-- src/hooks/useMessage.tsx | 1 - 21 files changed, 146 insertions(+), 47 deletions(-) diff --git a/src/assets/locale/ar/common.json b/src/assets/locale/ar/common.json index 2f8e349..6c2d77a 100644 --- a/src/assets/locale/ar/common.json +++ b/src/assets/locale/ar/common.json @@ -124,5 +124,6 @@ }, "pin": "تثبيت", "unpin": "إلغاء التثبيت", - "generationInfo": "معلومات التوليد" + "generationInfo": "معلومات التوليد", + "sidebarChat": "دردشة الشريط الجانبي" } diff --git a/src/assets/locale/da/common.json b/src/assets/locale/da/common.json index de82642..9b2b30b 100644 --- a/src/assets/locale/da/common.json +++ b/src/assets/locale/da/common.json @@ -117,5 +117,6 @@ }, "pin": "Fastgør", "unpin": "Frigør", - "generationInfo": "Genererings Info" + "generationInfo": "Genererings Info", + "sidebarChat": "Sidepanel Chat" } \ No newline at end of file diff --git a/src/assets/locale/de/common.json b/src/assets/locale/de/common.json index 65b72ab..d6bb325 100644 --- a/src/assets/locale/de/common.json +++ b/src/assets/locale/de/common.json @@ -117,5 +117,6 @@ }, "pin": "Anheften", "unpin": "Losheften", - "generationInfo": "Generierungsinformationen" + "generationInfo": "Generierungsinformationen", + "sidebarChat": "Seitenleisten-Chat" } \ No newline at end of file diff --git a/src/assets/locale/en/common.json b/src/assets/locale/en/common.json index 6f14588..2268c8d 100644 --- a/src/assets/locale/en/common.json +++ b/src/assets/locale/en/common.json @@ -151,5 +151,6 @@ }, "pin": "Pin", "unpin": "Unpin", - "generationInfo": "Generation Info" + "generationInfo": "Generation Info", + "sidebarChat": "Sidebar Chat" } \ No newline at end of file diff --git a/src/assets/locale/es/common.json b/src/assets/locale/es/common.json index 210e043..4a3967c 100644 --- a/src/assets/locale/es/common.json +++ b/src/assets/locale/es/common.json @@ -116,5 +116,6 @@ }, "pin": "Fijar", "unpin": "Desfijar", - "generationInfo": "Información de Generación" + "generationInfo": "Información de Generación", + "sidebarChat": "Chat lateral" } \ No newline at end of file diff --git a/src/assets/locale/fa/common.json b/src/assets/locale/fa/common.json index 72301c7..8532074 100644 --- a/src/assets/locale/fa/common.json +++ b/src/assets/locale/fa/common.json @@ -110,5 +110,6 @@ }, "pin": "پین کردن", "unpin": "حذف پین", - "generationInfo": "اطلاعات تولید" + "generationInfo": "اطلاعات تولید", + "sidebarChat": "چت کناری" } \ No newline at end of file diff --git a/src/assets/locale/fr/common.json b/src/assets/locale/fr/common.json index d11ef8c..432c2c0 100644 --- a/src/assets/locale/fr/common.json +++ b/src/assets/locale/fr/common.json @@ -116,5 +116,6 @@ }, "pin": "Épingler", "unpin": "Désépingler", - "generationInfo": "Informations de génération" + "generationInfo": "Informations de génération", + "sidebarChat": "Chat latéral" } \ No newline at end of file diff --git a/src/assets/locale/it/common.json b/src/assets/locale/it/common.json index 6b08509..edcc2b8 100644 --- a/src/assets/locale/it/common.json +++ b/src/assets/locale/it/common.json @@ -116,5 +116,6 @@ }, "pin": "Fissa", "unpin": "Rimuovi", - "generationInfo": "Informazioni sulla Generazione" + "generationInfo": "Informazioni sulla Generazione", + "sidebarChat": "Chat Laterale" } \ No newline at end of file diff --git a/src/assets/locale/ja-JP/common.json b/src/assets/locale/ja-JP/common.json index 92ba8e0..dd2700b 100644 --- a/src/assets/locale/ja-JP/common.json +++ b/src/assets/locale/ja-JP/common.json @@ -116,5 +116,6 @@ }, "pin": "固定", "unpin": "固定解除", - "generationInfo": "生成情報" + "generationInfo": "生成情報", + "sidebarChat": "サイドバーチャット" } \ No newline at end of file diff --git a/src/assets/locale/ko/common.json b/src/assets/locale/ko/common.json index ed9e0b9..0e83e43 100644 --- a/src/assets/locale/ko/common.json +++ b/src/assets/locale/ko/common.json @@ -73,7 +73,8 @@ "numPredict": { "label": "최대 토큰 수 (num_predict)", "placeholder": "최대 토큰 수를 입력하세요 (예: 2048, 4096)" - }, "seed": { + }, + "seed": { "label": "시드", "placeholder": "시드 값을 입력하세요 (예: 1234)", "help": "모델 출력의 재현성" @@ -115,5 +116,6 @@ }, "pin": "고정", "unpin": "고정 해제", - "generationInfo": "생성 정보" -} + "generationInfo": "생성 정보", + "sidebarChat": "사이드바 채팅" +} \ No newline at end of file diff --git a/src/assets/locale/ml/common.json b/src/assets/locale/ml/common.json index cd6868d..ae5489a 100644 --- a/src/assets/locale/ml/common.json +++ b/src/assets/locale/ml/common.json @@ -115,6 +115,7 @@ }, "pin": "പിൻ ചെയ്യുക", "unpin": "അൺപിൻ ചെയ്യുക", - "generationInfo": "ജനറേഷൻ വിവരങ്ങൾ" + "generationInfo": "ജനറേഷൻ വിവരങ്ങൾ", + "sidebarChat": "സൈഡ്ബാർ ചാറ്റ്" } \ No newline at end of file diff --git a/src/assets/locale/no/common.json b/src/assets/locale/no/common.json index 1720d1f..24b51b5 100644 --- a/src/assets/locale/no/common.json +++ b/src/assets/locale/no/common.json @@ -117,5 +117,6 @@ }, "pin": "Fest", "unpin": "Løsne", - "generationInfo": "Generasjonsinformasjon" + "generationInfo": "Generasjonsinformasjon", + "sidebarChat": "Sidepanel-chat" } \ No newline at end of file diff --git a/src/assets/locale/pt-BR/common.json b/src/assets/locale/pt-BR/common.json index 660514d..4e1a15b 100644 --- a/src/assets/locale/pt-BR/common.json +++ b/src/assets/locale/pt-BR/common.json @@ -116,5 +116,6 @@ }, "pin": "Fixar", "unpin": "Desafixar", - "generationInfo": "Informações de Geração" + "generationInfo": "Informações de Geração", + "sidebarChat": "Chat Lateral" } \ No newline at end of file diff --git a/src/assets/locale/ru/common.json b/src/assets/locale/ru/common.json index 31291a0..cbdc13d 100644 --- a/src/assets/locale/ru/common.json +++ b/src/assets/locale/ru/common.json @@ -116,5 +116,6 @@ }, "pin": "Закрепить", "unpin": "Открепить", - "generationInfo": "Информация о генерации" + "generationInfo": "Информация о генерации", + "sidebarChat": "Боковой чат" } \ No newline at end of file diff --git a/src/assets/locale/sv/common.json b/src/assets/locale/sv/common.json index 4698dc7..6918290 100644 --- a/src/assets/locale/sv/common.json +++ b/src/assets/locale/sv/common.json @@ -121,5 +121,6 @@ }, "pin": "Fäst", "unpin": "Ta bort fäst", - "generationInfo": "Generationsinformation" -} + "generationInfo": "Generationsinformation", + "sidebarChat": "Sidofältschatt" +} \ No newline at end of file diff --git a/src/assets/locale/uk/common.json b/src/assets/locale/uk/common.json index 899e12b..b4773d4 100644 --- a/src/assets/locale/uk/common.json +++ b/src/assets/locale/uk/common.json @@ -121,5 +121,6 @@ }, "pin": "Прикріпити", "unpin": "Відкріпити", - "generationInfo": "Інформація про генерацію" -} + "generationInfo": "Інформація про генерацію", + "sidebarChat": "Бічний чат" +} \ No newline at end of file diff --git a/src/assets/locale/zh/common.json b/src/assets/locale/zh/common.json index 080776a..4d01d24 100644 --- a/src/assets/locale/zh/common.json +++ b/src/assets/locale/zh/common.json @@ -116,5 +116,6 @@ }, "pin": "置顶", "unpin": "取消置顶", - "generationInfo": "生成信息" + "generationInfo": "生成信息", + "sidebarChat": "侧边栏聊天" } \ No newline at end of file diff --git a/src/components/Layouts/Layout.tsx b/src/components/Layouts/Layout.tsx index e8e9c1d..3a6b6b8 100644 --- a/src/components/Layouts/Layout.tsx +++ b/src/components/Layouts/Layout.tsx @@ -11,6 +11,7 @@ import { EraserIcon } from "lucide-react" import { PageAssitDatabase } from "@/db" import { useMessageOption } from "@/hooks/useMessageOption" import { useQueryClient } from "@tanstack/react-query" +import { useStoreChatModelSettings } from "@/store/model" export default function OptionLayout({ children @@ -20,8 +21,19 @@ export default function OptionLayout({ const [sidebarOpen, setSidebarOpen] = useState(false) const { t } = useTranslation(["option", "common", "settings"]) const [openModelSettings, setOpenModelSettings] = useState(false) - const { clearChat } = useMessageOption() + const { + setMessages, + setHistory, + setHistoryId, + historyId, + clearChat, + setSelectedModel, + temporaryChat, + setSelectedSystemPrompt + } = useMessageOption() + const queryClient = useQueryClient() + const { setSystemPrompt } = useStoreChatModelSettings() return ( <> @@ -70,7 +82,19 @@ export default function OptionLayout({ closeIcon={null} onClose={() => setSidebarOpen(false)} open={sidebarOpen}> - setSidebarOpen(false)} /> + setSidebarOpen(false)} + setMessages={setMessages} + setHistory={setHistory} + setHistoryId={setHistoryId} + setSelectedModel={setSelectedModel} + setSelectedSystemPrompt={setSelectedSystemPrompt} + clearChat={clearChat} + historyId={historyId} + setSystemPrompt={setSystemPrompt} + temporaryChat={temporaryChat} + history={history} + /> void + setMessages: (messages: any) => void + setHistory: (history: any) => void + setHistoryId: (historyId: string) => void + setSelectedModel: (model: string) => void + setSelectedSystemPrompt: (prompt: string) => void + setSystemPrompt: (prompt: string) => void + clearChat: () => void + temporaryChat: boolean + historyId: string + history: any } -export const Sidebar = ({ onClose }: Props) => { - const { - setMessages, - setHistory, - setHistoryId, - historyId, - clearChat, - setSelectedModel, - temporaryChat, - setSelectedSystemPrompt - } = useMessageOption() - - const { setSystemPrompt } = useStoreChatModelSettings() - +export const Sidebar = ({ + onClose, + setMessages, + setHistory, + setHistoryId, + setSelectedModel, + setSelectedSystemPrompt, + clearChat, + historyId, + setSystemPrompt, + temporaryChat +}: Props) => { const { t } = useTranslation(["option", "common"]) const client = useQueryClient() const navigate = useNavigate() @@ -162,7 +169,12 @@ export const Sidebar = ({ onClose }: Props) => { {group.items.map((chat, index) => (
+ className="flex py-2 px-2 items-center gap-3 relative rounded-md truncate hover:pr-4 group transition-opacity duration-300 ease-in-out bg-gray-100 dark:bg-[#232222] dark:text-gray-100 text-gray-800 border hover:bg-gray-200 dark:hover:bg-[#2d2d2d] dark:border-gray-800"> + {chat?.message_source === "copilot" && ( + + + + )} )} + + + - {!hideCurrentChatModelSettings && (
+ } + placement="left" + closeIcon={null} + onClose={() => setSidebarOpen(false)} + open={sidebarOpen}> + setSidebarOpen(false)} + setMessages={setMessages} + setHistory={setHistory} + setHistoryId={setHistoryId} + setSelectedModel={setSelectedModel} + setSelectedSystemPrompt={setSelectedSystemPrompt} + clearChat={clearChat} + historyId={historyId} + setSystemPrompt={(e) => {}} + temporaryChat={false} + history={history} + /> + ) } diff --git a/src/hooks/useMessage.tsx b/src/hooks/useMessage.tsx index a32fedc..4bf2998 100644 --- a/src/hooks/useMessage.tsx +++ b/src/hooks/useMessage.tsx @@ -34,7 +34,6 @@ import { pageAssistModel } from "@/models" import { getPrompt } from "@/services/application" import { humanMessageFormatter } from "@/utils/human-message" import { pageAssistEmbeddingModel } from "@/models/embedding" -import { PageAssistVectorStore } from "@/libs/PageAssistVectorStore" import { PAMemoryVectorStore } from "@/libs/PAMemoryVectorStore" import { getScreenshotFromCurrentTab } from "@/libs/get-screenshot"