import { useCallback, useEffect, useRef } from 'react' import { Circle, Drawer as ChakraDrawer, DrawerBody, DrawerCloseButton, DrawerContent, DrawerHeader, DrawerOverlay, DrawerFooter, IconButton, useDisclosure, Button, } from '@chakra-ui/react' import cx from 'classnames' import UploadList from '@/components/file/upload/upload-list' import { IconClearAll, IconUpload } from '@/lib' import { completedUploadsCleared } from '@/store/entities/uploads' import { useAppDispatch, useAppSelector } from '@/store/hook' import { uploadsDrawerClosed } from '@/store/ui/uploads-drawer' const TopBarUploadDrawer = () => { const dispatch = useAppDispatch() const hasPendingUploads = useAppSelector( (state) => state.entities.uploads.items.filter((e) => !e.completed).length > 0, ) const openDrawer = useAppSelector((state) => state.ui.uploadsDrawer.open) const hasCompleted = useAppSelector( (state) => state.entities.uploads.items.filter((e) => e.completed).length > 0, ) const { isOpen, onOpen, onClose } = useDisclosure() const buttonRef = useRef(null) useEffect(() => { if (openDrawer) { onOpen() } else { onClose() } }, [openDrawer, onOpen, onClose]) const handleClearCompleted = useCallback(() => { dispatch(completedUploadsCleared()) }, [dispatch]) return ( <>
} aria-label="" onClick={onOpen} /> {hasPendingUploads && ( )}
{ onClose() dispatch(uploadsDrawerClosed()) }} finalFocusRef={buttonRef} > Uploads {hasCompleted && ( )} ) } export default TopBarUploadDrawer