import { PlusIcon, TruckIcon, UploadIcon } from '@heroicons/react/outline'; import { useCallback, useRef } from 'react'; import { useRecoilState, useSetRecoilState } from 'recoil'; import { AnimatedHeight } from '../../../atoms/animated-height'; import { getFilesTree } from '../../../components/uploads/file-tree-utils'; import UploadZone from '../../../components/uploads/upload-zone'; import { useDriveItem } from '../../../features/drive/hooks/use-drive-item'; import { useDriveUpload } from '../../../features/drive/hooks/use-drive-upload'; import useRouterCompany from '../../../features/router/hooks/use-router-company'; import { DriveCurrentFolderAtom } from '../body/drive/browser'; import { ConfirmDeleteModalAtom } from '../body/drive/modals/confirm-delete'; import { CreateModal, CreateModalAtom } from '../body/drive/modals/create'; import { UploadModelAtom, UploadModal } from '../body/drive/modals/upload' import { Button } from '@atoms/button/button'; import Languages from "features/global/services/languages-service"; import { useCurrentUser } from 'app/features/users/hooks/use-current-user'; import useRouteState from 'app/features/router/hooks/use-route-state'; export const CreateModalWithUploadZones = ({ initialParentId }: { initialParentId?: string }) => { const companyId = useRouterCompany(); const uploadZoneRef = useRef(null); const uploadFolderZoneRef = useRef(null); const setCreationModalState = useSetRecoilState(CreateModalAtom); const setUploadModalState = useSetRecoilState(UploadModelAtom); const { uploadTree, uploadFromUrl } = useDriveUpload(); const { user } = useCurrentUser(); const [ parentId ] = useRecoilState( DriveCurrentFolderAtom({ initialFolderId: initialParentId || 'user_'+user?.id }), ); return ( <> { const tree = await getFilesTree(event); setCreationModalState({ parent_id: '', open: false }); uploadTree(tree, { companyId, parentId, }); setUploadModalState({ parent_id: '', open: false }); }} /> { const tree = await getFilesTree(event); setCreationModalState({ parent_id: '', open: false }); uploadTree(tree, { companyId, parentId, }); setUploadModalState({ parent_id: '', open: false }); }} /> uploadFolderZoneRef.current?.open()} selectFromDevice={() => uploadZoneRef.current?.open()} addFromUrl={(url, name) => { setCreationModalState({ parent_id: '', open: false }); uploadFromUrl(url, name, { companyId, parentId, }); }} /> uploadFolderZoneRef.current?.open()} selectFromDevice={() => uploadZoneRef.current?.open()} addFromUrl={(url, name) => { setUploadModalState({ parent_id: '', open: false }); uploadFromUrl(url, name, { companyId, parentId, }); }} /> ); }; export default () => { const { user } = useCurrentUser(); const { viewId, dirId } = useRouteState(); const [ parentId ] = useRecoilState(DriveCurrentFolderAtom({ initialFolderId: dirId || viewId || 'user_'+user?.id })); const { access, item } = useDriveItem(parentId); const { children: trashChildren } = useDriveItem(viewId === 'trash' ? 'trash' : 'trash_'+user?.id); const uploadZoneRef = useRef(null); const { uploadTree } = useDriveUpload(); const companyId = useRouterCompany(); const inTrash = viewId?.includes("trash") || false; const setConfirmDeleteModalState = useSetRecoilState(ConfirmDeleteModalAtom); const setCreationModalState = useSetRecoilState(CreateModalAtom); const setUploadModalState = useSetRecoilState(UploadModelAtom); const openItemModal = useCallback(() => { if (item?.id) setCreationModalState({ open: true, parent_id: item.id }); }, [item?.id, setCreationModalState]); const uploadItemModal = useCallback(() => { if (item?.id) setUploadModalState({ open: true, parent_id: item.id }); }, [item?.id, setUploadModalState]); return (
{inTrash && ( <> )} {!(inTrash || access === 'read') && ( <> { const tree = await getFilesTree(event); setCreationModalState({ parent_id: '', open: false }); uploadTree(tree, { companyId, parentId, }); }} testClassId="sidebar-action-upload-zone" /> )}
); };