/** * Copyright 2021 Design Barn Inc. */ /* eslint-disable @typescript-eslint/no-explicit-any */ import React from 'react'; import { useParams } from 'react-router-dom'; import { useQuery } from 'urql'; import { ArrowLeftIcon } from '../../../../assets/Icons'; import { useWorkspace } from '../../../../context/workspace-provider'; import { queries } from '../../../../helpers/query-strings'; import { Empty } from './components/empty'; import { ErrorView } from './components/error-view'; import { FileCard } from './components/file-card'; import { Loading } from './components/loading'; export const Folder = () => { const { goBack, setProject } = useWorkspace(); const params = useParams<{ folderId: string; projectId: string }>(); const [{ data: projectData }] = useQuery({ query: queries.project, variables: { id: params.projectId, }, }); const [{ data, error, fetching: loading }] = useQuery({ query: queries.folder, requestPolicy: 'network-only', variables: { id: params.folderId }, }); const [{ data: folderFilesData, error: folderFilesError, fetching: folderFilesLoading }] = useQuery({ query: queries.folderFiles, requestPolicy: 'network-only', variables: { id: params.folderId, first: 15, }, }); React.useEffect(() => { if (projectData) { setProject(projectData.project); } }, [projectData]); const folder = (data && data.folder) || {}; const files = (folderFilesData && folderFilesData.folderFiles.edges) || []; const renderContent = () => { if (loading || folderFilesLoading) { return ; } if (error || folderFilesError) { return ( { goBack(); }, }} /> ); } if (files.length === 0) { return ( ); } return ( {files.map((file: any) => ( ))} ); }; const path = folder.project ? ( {folder.project.title} / {folder.name} ) : ( '...' ); return ( <> {path} {renderContent()} > ); };