🔀 Merge branch 'main' into release/v1.0.3 fixes #622 #594 #620 #628

Temporarily: #603
This commit is contained in:
Eric Doughty-Papassideris
2024-07-24 17:03:43 +02:00
4 changed files with 18 additions and 15 deletions
@@ -111,9 +111,11 @@ export const useDriveActions = () => {
); );
const remove = useCallback( const remove = useCallback(
async (id: string, parentId: string) => { async (id: string | string[], parentId: string) => {
try { 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 refresh(parentId || '', true);
await getQuota(); await getQuota();
} catch (e) { } catch (e) {
@@ -149,14 +149,14 @@ export default memo(
if (item?.id) setUploadModalState({ open: true, parent_id: item.id }); if (item?.id) setUploadModalState({ open: true, parent_id: item.id });
}, [item?.id, setUploadModalState]); }, [item?.id, setUploadModalState]);
const documents = ( const items = item?.is_directory === false
item?.is_directory === false
? //We use this hack for public shared single file ? //We use this hack for public shared single file
item item
? [item] ? [item]
: [] : []
: children : children
).filter(i => !i.is_directory);
const documents = items.filter(i => !i.is_directory);
const selectedCount = Object.values(checked).filter(v => v).length; const selectedCount = Object.values(checked).filter(v => v).length;
@@ -292,6 +292,7 @@ export default memo(
}} }}
onDragOver={handleDragOver} onDragOver={handleDragOver}
onDrop={handleDrop} onDrop={handleDrop}
disabled={inTrash || access === 'read'}
> >
{role == 'admin' && <UsersModal />} {role == 'admin' && <UsersModal />}
<VersionsModal /> <VersionsModal />
@@ -307,7 +308,7 @@ export default memo(
<div <div
className={ className={
'flex flex-col grow h-full overflow-hidden ' + 'flex flex-col grow h-full overflow-hidden ' +
(loading && (!children?.length || loadingParentChange) ? 'opacity-50 ' : '') (loading && (!items?.length || loadingParentChange) ? 'opacity-50 ' : '')
} }
> >
<div className="flex flex-row shrink-0 items-center mb-4"> <div className="flex flex-row shrink-0 items-center mb-4">
@@ -423,7 +424,7 @@ export default memo(
<DndContext sensors={sensors} onDragEnd={handleDragEnd} onDragStart={handleDragStart}> <DndContext sensors={sensors} onDragEnd={handleDragEnd} onDragStart={handleDragStart}>
<div className="grow overflow-auto" ref={scrollViwer}> <div className="grow overflow-auto" ref={scrollViwer}>
{documents.length === 0 && !loading && ( {items.length === 0 && !loading && (
<div className="mt-4 text-center border-2 border-dashed rounded-md p-8"> <div className="mt-4 text-center border-2 border-dashed rounded-md p-8">
<Subtitle className="block mb-2"> <Subtitle className="block mb-2">
{Languages.t('scenes.app.drive.nothing')} {Languages.t('scenes.app.drive.nothing')}
@@ -443,14 +444,14 @@ export default memo(
)} )}
</div> </div>
)} )}
{children.map((child, index) => {items.map((child, index) =>
child.is_directory ? ( child.is_directory ? (
<Droppable id={index} key={index}> <Droppable id={index} key={index}>
<FolderRow <FolderRow
key={index} key={index}
className={ className={
(index === 0 ? 'rounded-t-md ' : '') + (index === 0 ? 'rounded-t-md ' : '') +
(index === children.length - 1 ? 'rounded-b-md ' : '') (index === items.length - 1 ? 'rounded-b-md ' : '')
} }
item={child} item={child}
onClick={() => { onClick={() => {
@@ -476,7 +477,7 @@ export default memo(
<DocumentRowOverlay <DocumentRowOverlay
className={ className={
(activeIndex === 0 ? 'rounded-t-md ' : '') + (activeIndex === 0 ? 'rounded-t-md ' : '') +
(activeIndex === children.length - 1 ? 'rounded-b-md ' : '') (activeIndex === items.length - 1 ? 'rounded-b-md ' : '')
} }
item={activeChild} item={activeChild}
></DocumentRowOverlay> ></DocumentRowOverlay>
@@ -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', type: 'menu',
icon: 'eye', icon: 'eye',
@@ -112,7 +113,7 @@ export const useOnBuildContextMenu = (children: DriveItem[], initialParentId?: s
const route = RouterServices.generateRouteFromState({ companyId: company, viewId, itemId }); const route = RouterServices.generateRouteFromState({ companyId: company, viewId, itemId });
window.open(route, '_blank'); window.open(route, '_blank');
} }
}, }, // */
{ type: 'separator' }, { type: 'separator' },
{ {
type: 'menu', type: 'menu',
@@ -41,7 +41,7 @@ const ConfirmDeleteModalContent = ({ items }: { items: DriveItem[] }) => {
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const [state, setState] = useRecoilState(ConfirmDeleteModalAtom); const [state, setState] = useRecoilState(ConfirmDeleteModalAtom);
const [, setSelected] = useRecoilState(DriveItemSelectedList); const [, setSelected] = useRecoilState(DriveItemSelectedList);
const { viewId } = RouterServices.getStateFromRoute(); const { dirId, viewId } = RouterServices.getStateFromRoute();
useEffect(() => { useEffect(() => {
refresh(items[0].id); refresh(items[0].id);
@@ -65,9 +65,8 @@ const ConfirmDeleteModalContent = ({ items }: { items: DriveItem[] }) => {
loading={loading} loading={loading}
onClick={async () => { onClick={async () => {
setLoading(true); setLoading(true);
for (const item of items) { const ids = items.map((item) => item.id);
await remove(item.id, viewId || ""); await remove(ids, dirId || viewId || "");
}
setLoading(false); setLoading(false);
setSelected({}); setSelected({});
setState({ ...state, open: false }); setState({ ...state, open: false });