import React, {Fragment, useContext, useEffect, useMemo} from 'react'; import {Link, useLocation, useParams} from 'react-router-dom'; import {Sidebar} from './sidebar/sidebar'; import {FileView} from '../file-view/file-view'; import {UploadQueue} from '../uploading/upload-queue'; import {driveState, useDriveStore} from '../drive-store'; import { DRIVE_PAGES, makePartialFolderPage, SearchPage, } from '../drive-page/drive-page'; import {DetailsSidebar} from '../details-sidebar/details-sidebar'; import {DriveDialogsContainer} from '../files/dialogs/drive-dialogs-container'; import {NavbarSearch} from '../search/navbar-search'; import {useActiveWorkspaceId} from '@common/workspace/active-workspace-id-context'; import {FileEntryUrlsContext} from '@common/uploads/hooks/file-entry-urls'; import {FileUploadProvider} from '@common/uploads/uploader/file-upload-provider'; import {EntryDragPreview} from '../file-view/entry-drag-preview'; import {DashboardLayout} from '@common/ui/layout/dashboard-layout'; import {DashboardContent} from '@common/ui/layout/dashboard-content'; import {DashboardNavbar} from '@common/ui/layout/dashboard-navbar'; import {DriveContentHeader} from './drive-content-header'; import {IconButton} from '@common/ui/buttons/icon-button'; import {SearchIcon} from '@common/icons/material/Search'; import {DashboardLayoutContext} from '@common/ui/layout/dashboard-layout-context'; import {CloseIcon} from '@common/icons/material/Close'; import {Trans} from '@common/i18n/trans'; import {EntryActionList} from '../entry-actions/entry-action-list'; import {CreateNewButton} from './create-new-button'; import {StaticPageTitle} from '@common/seo/static-page-title'; import {DashboardSidenav} from '@common/ui/layout/dashboard-sidenav'; export function DriveLayout() { const {pathname} = useLocation(); const {hash} = useParams(); const {workspaceId} = useActiveWorkspaceId(); const activePage = useDriveStore(s => s.activePage); useEffect(() => { driveState().setActivePage( DRIVE_PAGES.find(p => p.path === pathname) || makePartialFolderPage(hash!), ); }, [pathname, hash]); const urlsContextValue = useMemo(() => { return {workspaceId}; }, [workspaceId]); useEffect(() => { return () => { driveState().reset(); }; }, []); return ( {activePage?.label && ( )} { e.preventDefault(); e.stopPropagation(); e.dataTransfer.dropEffect = 'none'; }} onDrop={e => { // prevent files from desktop from blowing away the document e.preventDefault(); }} > ); } function Navbar() { const {isMobileMode} = useContext(DashboardLayoutContext); const activePage = useDriveStore(s => s.activePage); const children = isMobileMode ? null : ; const searchButton = ( ); const mobileRightChildren = ( {activePage !== SearchPage && searchButton} ); return ( {children} {isMobileMode && } ); } function FloatingActionList() { const entriesSelected = useDriveStore(s => s.selectedEntries.size); if (!entriesSelected) return null; return (
{ driveState().selectEntries([]); }} >
); }