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 });