import { DashboardFolder } from '.prisma/client' import { Button, Editable, EditableInput, EditablePreview, MenuItem, useDisclosure, Text, VStack, IconButton, Menu, MenuButton, MenuList, useToast, SkeletonText, SkeletonCircle, WrapItem, } from '@chakra-ui/react' import { FolderIcon, MoreVerticalIcon } from 'assets/icons' import { ConfirmModal } from 'components/modals/ConfirmModal' import { useTypebotDnd } from 'contexts/TypebotDndContext' import { useRouter } from 'next/router' import React, { useMemo } from 'react' import { deleteFolder, updateFolder } from 'services/folders' export const FolderButton = ({ folder, onFolderDeleted, onFolderRenamed, }: { folder: DashboardFolder onFolderDeleted: () => void onFolderRenamed: (newName: string) => void }) => { const router = useRouter() const { draggedTypebot, setMouseOverFolderId, mouseOverFolderId } = useTypebotDnd() const isTypebotOver = useMemo( () => draggedTypebot && mouseOverFolderId === folder.id, [draggedTypebot, folder.id, mouseOverFolderId] ) const { isOpen, onOpen, onClose } = useDisclosure() const toast = useToast({ position: 'top-right', status: 'error', }) const onDeleteClick = async () => { const { error } = await deleteFolder(folder.id) return error ? toast({ title: "Couldn't delete the folder", description: error.message, }) : onFolderDeleted() } const onRenameSubmit = async (newName: string) => { if (newName === '' || newName === folder.name) return const { error } = await updateFolder(folder.id, { name: newName }) return error ? toast({ title: 'An error occured', description: error.message }) : onFolderRenamed(newName) } const handleClick = () => { router.push(`/typebots/folders/${folder.id}`) } const handleMouseEnter = () => setMouseOverFolderId(folder.id) const handleMouseLeave = () => setMouseOverFolderId(undefined) return ( ) } export const ButtonSkeleton = () => ( )