diff --git a/tdrive/frontend/src/app/features/drive/hooks/use-drive-actions.tsx b/tdrive/frontend/src/app/features/drive/hooks/use-drive-actions.tsx index f56c794e..cbb7eb3d 100644 --- a/tdrive/frontend/src/app/features/drive/hooks/use-drive-actions.tsx +++ b/tdrive/frontend/src/app/features/drive/hooks/use-drive-actions.tsx @@ -111,9 +111,11 @@ export const useDriveActions = () => { ); const remove = useCallback( - async (id: string, parentId: string) => { + async (id: string | string[], parentId: string) => { try { - await DriveApiClient.remove(companyId, id); + if (Array.isArray(id)) { + await Promise.all(id.map(i => DriveApiClient.remove(companyId, i))); + } else await DriveApiClient.remove(companyId, id); await refresh(parentId || '', true); await getQuota(); } catch (e) { diff --git a/tdrive/frontend/src/app/views/client/body/drive/browser.tsx b/tdrive/frontend/src/app/views/client/body/drive/browser.tsx index 5ba8b7f7..bb973514 100644 --- a/tdrive/frontend/src/app/views/client/body/drive/browser.tsx +++ b/tdrive/frontend/src/app/views/client/body/drive/browser.tsx @@ -149,14 +149,14 @@ export default memo( if (item?.id) setUploadModalState({ open: true, parent_id: item.id }); }, [item?.id, setUploadModalState]); - const documents = ( - item?.is_directory === false + const items = item?.is_directory === false ? //We use this hack for public shared single file item ? [item] : [] : children - ).filter(i => !i.is_directory); + + const documents = items.filter(i => !i.is_directory); const selectedCount = Object.values(checked).filter(v => v).length; @@ -292,6 +292,7 @@ export default memo( }} onDragOver={handleDragOver} onDrop={handleDrop} + disabled={inTrash || access === 'read'} > {role == 'admin' && } @@ -307,7 +308,7 @@ export default memo(
@@ -423,7 +424,7 @@ export default memo(
- {documents.length === 0 && !loading && ( + {items.length === 0 && !loading && (
{Languages.t('scenes.app.drive.nothing')} @@ -443,14 +444,14 @@ export default memo( )}
)} - {children.map((child, index) => + {items.map((child, index) => child.is_directory ? ( { @@ -476,7 +477,7 @@ export default memo( diff --git a/tdrive/frontend/src/app/views/client/body/drive/context-menu.tsx b/tdrive/frontend/src/app/views/client/body/drive/context-menu.tsx index 4185694c..5b265e3b 100644 --- a/tdrive/frontend/src/app/views/client/body/drive/context-menu.tsx +++ b/tdrive/frontend/src/app/views/client/body/drive/context-menu.tsx @@ -102,6 +102,7 @@ export const useOnBuildContextMenu = (children: DriveItem[], initialParentId?: s } } }, + /*TODO: fix loading of preview in new window and uncomment. See https://github.com/linagora/twake-drive/issues/603 . { type: 'menu', icon: 'eye', @@ -112,7 +113,7 @@ export const useOnBuildContextMenu = (children: DriveItem[], initialParentId?: s const route = RouterServices.generateRouteFromState({ companyId: company, viewId, itemId }); window.open(route, '_blank'); } - }, + }, // */ { type: 'separator' }, { type: 'menu', diff --git a/tdrive/frontend/src/app/views/client/body/drive/modals/confirm-delete/index.tsx b/tdrive/frontend/src/app/views/client/body/drive/modals/confirm-delete/index.tsx index d31ad1c2..5a31d570 100644 --- a/tdrive/frontend/src/app/views/client/body/drive/modals/confirm-delete/index.tsx +++ b/tdrive/frontend/src/app/views/client/body/drive/modals/confirm-delete/index.tsx @@ -41,7 +41,7 @@ const ConfirmDeleteModalContent = ({ items }: { items: DriveItem[] }) => { const [loading, setLoading] = useState(false); const [state, setState] = useRecoilState(ConfirmDeleteModalAtom); const [, setSelected] = useRecoilState(DriveItemSelectedList); - const { viewId } = RouterServices.getStateFromRoute(); + const { dirId, viewId } = RouterServices.getStateFromRoute(); useEffect(() => { refresh(items[0].id); @@ -65,9 +65,8 @@ const ConfirmDeleteModalContent = ({ items }: { items: DriveItem[] }) => { loading={loading} onClick={async () => { setLoading(true); - for (const item of items) { - await remove(item.id, viewId || ""); - } + const ids = items.map((item) => item.id); + await remove(ids, dirId || viewId || ""); setLoading(false); setSelected({}); setState({ ...state, open: false });