feat: Add clear chat history button to drawer

Adds a button to the sidebar drawer for clearing chat history.
The button uses a confirmation prompt to ensure user intent and clears the database entries.
This allows users to reset their chat history for a fresh start.
The button uses a tooltip to provide more information on its function.
This commit is contained in:
n4ze3m 2024-09-27 19:38:29 +05:30
parent 53d999a596
commit 2e97f6470d
2 changed files with 41 additions and 4 deletions

View File

@ -1,12 +1,16 @@
import React, { useState } from "react"
import { Sidebar } from "../Option/Sidebar"
import { Drawer } from "antd"
import { Drawer, Tooltip } from "antd"
import { useTranslation } from "react-i18next"
import { CurrentChatModelSettings } from "../Common/Settings/CurrentChatModelSettings"
import { Header } from "./Header"
import { EraserIcon } from "lucide-react"
import { PageAssitDatabase } from "@/db"
import { useMessageOption } from "@/hooks/useMessageOption"
import { useQueryClient } from "@tanstack/react-query"
export default function OptionLayout({
children
@ -14,8 +18,10 @@ export default function OptionLayout({
children: React.ReactNode
}) {
const [sidebarOpen, setSidebarOpen] = useState(false)
const { t } = useTranslation(["option", "common"])
const { t } = useTranslation(["option", "common", "settings"])
const [openModelSettings, setOpenModelSettings] = useState(false)
const { clearChat } = useMessageOption()
const queryClient = useQueryClient()
return (
<>
@ -28,7 +34,38 @@ export default function OptionLayout({
</div>
<Drawer
title={t("sidebarTitle")}
title={
<div className="flex items-center justify-between">
{t("sidebarTitle")}
<Tooltip
title={t(
"settings:generalSettings.system.deleteChatHistory.label"
)}
placement="right">
<button
onClick={async () => {
const confirm = window.confirm(
t(
"settings:generalSettings.system.deleteChatHistory.confirm"
)
)
if (confirm) {
const db = new PageAssitDatabase()
await db.deleteAllChatHistory()
queryClient.invalidateQueries({
queryKey: ["fetchChatHistory"]
})
clearChat()
}
}}
className="text-gray-600 hover:text-gray-800 dark:text-gray-300 dark:hover:text-gray-100">
<EraserIcon className="size-5" />
</button>
</Tooltip>
</div>
}
placement="left"
closeIcon={null}
onClose={() => setSidebarOpen(false)}

View File

@ -50,7 +50,7 @@ export default defineConfig({
outDir: "build",
manifest: {
version: "1.2.3",
version: "1.2.4",
name:
process.env.TARGET === "firefox"
? "Page Assist - A Web UI for Local AI Models"