import { useChatHandler } from "@/components/chat/chat-hooks/use-chat-handler" import { ChatbotUIContext } from "@/context/context" import { createFolder } from "@/db/folders" import { ContentType } from "@/types" import { IconFolderPlus, IconPlus } from "@tabler/icons-react" import { FC, useContext, useState } from "react" import { Button } from "../ui/button" import { CreateAssistant } from "./items/assistants/create-assistant" import { CreateCollection } from "./items/collections/create-collection" import { CreateFile } from "./items/files/create-file" import { CreateModel } from "./items/models/create-model" import { CreatePreset } from "./items/presets/create-preset" import { CreatePrompt } from "./items/prompts/create-prompt" import { CreateTool } from "./items/tools/create-tool" interface SidebarCreateButtonsProps { contentType: ContentType hasData: boolean } export const SidebarCreateButtons: FC = ({ contentType, hasData }) => { const { profile, selectedWorkspace, folders, setFolders } = useContext(ChatbotUIContext) const { handleNewChat } = useChatHandler() const [isCreatingPrompt, setIsCreatingPrompt] = useState(false) const [isCreatingPreset, setIsCreatingPreset] = useState(false) const [isCreatingFile, setIsCreatingFile] = useState(false) const [isCreatingCollection, setIsCreatingCollection] = useState(false) const [isCreatingAssistant, setIsCreatingAssistant] = useState(false) const [isCreatingTool, setIsCreatingTool] = useState(false) const [isCreatingModel, setIsCreatingModel] = useState(false) const handleCreateFolder = async () => { if (!profile) return if (!selectedWorkspace) return const createdFolder = await createFolder({ user_id: profile.user_id, workspace_id: selectedWorkspace.id, name: "New Folder", description: "", type: contentType }) setFolders([...folders, createdFolder]) } const getCreateFunction = () => { switch (contentType) { case "chats": return async () => { handleNewChat() } case "presets": return async () => { setIsCreatingPreset(true) } case "prompts": return async () => { setIsCreatingPrompt(true) } case "files": return async () => { setIsCreatingFile(true) } case "collections": return async () => { setIsCreatingCollection(true) } case "assistants": return async () => { setIsCreatingAssistant(true) } case "tools": return async () => { setIsCreatingTool(true) } case "models": return async () => { setIsCreatingModel(true) } default: break } } return (
{hasData && ( )} {isCreatingPrompt && ( )} {isCreatingPreset && ( )} {isCreatingFile && ( )} {isCreatingCollection && ( )} {isCreatingAssistant && ( )} {isCreatingTool && ( )} {isCreatingModel && ( )}
) }