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 = () => (
)