import { Button, HStack, Stack, Tag, useToast, Text, Fade, Flex, useDisclosure, } from '@chakra-ui/react' import { DownloadIcon, TrashIcon } from 'assets/icons' import { ConfirmModal } from 'components/modals/ConfirmModal' import { SubmissionsTable } from 'components/results/SubmissionsTable' import React, { useCallback, useMemo, useState } from 'react' import { deleteAllResults, deleteResults, useResults } from 'services/results' type Props = { typebotId: string totalResults: number onDeleteResults: (total: number) => void } export const SubmissionsContent = ({ typebotId, totalResults, onDeleteResults, }: Props) => { const [selectedIds, setSelectedIds] = useState([]) const [isDeleteLoading, setIsDeleteLoading] = useState(false) const { isOpen, onOpen, onClose } = useDisclosure() const toast = useToast({ position: 'top-right', status: 'error', }) const { data, mutate, setSize, hasMore } = useResults({ typebotId, onError: (err) => toast({ title: err.name, description: err.message }), }) const results = useMemo(() => data?.flatMap((d) => d.results), [data]) const handleNewSelection = (newSelection: string[]) => { if (newSelection.length === selectedIds.length) return setSelectedIds(newSelection) } const handleDeleteSelection = async () => { setIsDeleteLoading(true) const { error } = totalSelected === totalResults ? await deleteAllResults(typebotId) : await deleteResults(typebotId, selectedIds) if (error) toast({ description: error.message, title: error.name }) else { mutate( totalSelected === totalResults ? [] : data?.map((d) => ({ results: d.results.filter((r) => !selectedIds.includes(r.id)), })) ) onDeleteResults(totalSelected) } setIsDeleteLoading(false) } const totalSelected = useMemo( () => selectedIds.length === results?.length ? totalResults : selectedIds.length, [results?.length, selectedIds.length, totalResults] ) const handleScrolledToBottom = useCallback( () => setSize((state) => state + 1), [setSize] ) return ( Export 0 && (results ?? []).length > 0} unmountOnExit > {totalSelected} 0} unmountOnExit> Delete {totalSelected > 0 && ( {totalSelected} )} You are about to delete{' '} {totalSelected} submission {totalSelected > 1 ? 's' : ''} . Are you sure you wish to continue? } confirmButtonLabel={'Delete'} /> ) }