import { useChatHandler } from "@/components/chat/chat-hooks/use-chat-handler" import { Button } from "@/components/ui/button" import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from "@/components/ui/dialog" import { ChatbotUIContext } from "@/context/context" import { deleteWorkspace } from "@/db/workspaces" import { Tables } from "@/supabase/types" import { FC, useContext, useRef, useState } from "react" import { Input } from "../ui/input" import { useRouter } from "next/navigation" import { usePathname } from "next/navigation" import i18nConfig from "@/i18nConfig" interface DeleteWorkspaceProps { workspace: Tables<"workspaces"> onDelete: () => void } export const DeleteWorkspace: FC = ({ workspace, onDelete }) => { const { setWorkspaces, setSelectedWorkspace } = useContext(ChatbotUIContext) const { handleNewChat } = useChatHandler() const router = useRouter() const buttonRef = useRef(null) const [showWorkspaceDialog, setShowWorkspaceDialog] = useState(false) const [name, setName] = useState("") const pathname = usePathname() // 获取当前路径 const pathSegments = pathname.split("/").filter(Boolean) const locales = i18nConfig.locales const defaultLocale = i18nConfig.defaultLocale let locale: (typeof locales)[number] = defaultLocale const segment = pathSegments[0] as (typeof locales)[number] if (locales.includes(segment)) { locale = segment } const homePath = locale === defaultLocale ? "/" : `/${locale}` const handleDeleteWorkspace = async () => { await deleteWorkspace(workspace.id) setWorkspaces(prevWorkspaces => { const filteredWorkspaces = prevWorkspaces.filter( w => w.id !== workspace.id ) const defaultWorkspace = filteredWorkspaces[0] setSelectedWorkspace(defaultWorkspace) router.push(`${homePath}/${defaultWorkspace.id}/chat`) // router.push(`/${defaultWorkspace.id}/chat`) return filteredWorkspaces }) setShowWorkspaceDialog(false) onDelete() handleNewChat() } const handleKeyDown = (e: React.KeyboardEvent) => { if (e.key === "Enter") { buttonRef.current?.click() } } return ( Delete {workspace.name} WARNING: Deleting a workspace will delete all of its data. setName(e.target.value)} /> ) }