Web:Client: update fetch files
This commit is contained in:
parent
e64f541d22
commit
1b48dadfeb
@ -26,10 +26,9 @@ const EmptyFolderContainer = ({
|
|||||||
setIsLoading,
|
setIsLoading,
|
||||||
parentId,
|
parentId,
|
||||||
linkStyles,
|
linkStyles,
|
||||||
isRooms,
|
editAccess,
|
||||||
sectionWidth,
|
sectionWidth,
|
||||||
canCreateFiles,
|
canCreateFiles,
|
||||||
canInviteUsers,
|
|
||||||
|
|
||||||
onClickInviteUsers,
|
onClickInviteUsers,
|
||||||
folderId,
|
folderId,
|
||||||
@ -43,10 +42,19 @@ const EmptyFolderContainer = ({
|
|||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
const location = useLocation();
|
const location = useLocation();
|
||||||
|
|
||||||
|
const isRoom =
|
||||||
|
rootFolderType === null
|
||||||
|
? location.state.rootFolderType === FolderType.Archive ||
|
||||||
|
location.state.rootFolderType === FolderType.Rooms
|
||||||
|
: rootFolderType === FolderType.Archive ||
|
||||||
|
rootFolderType === FolderType.Rooms;
|
||||||
|
|
||||||
|
const canInviteUsers = isRoom && editAccess;
|
||||||
|
|
||||||
const onBackToParentFolder = () => {
|
const onBackToParentFolder = () => {
|
||||||
setIsLoading(true);
|
setIsLoading(true);
|
||||||
|
|
||||||
if (isRooms) {
|
if (isRoom) {
|
||||||
const path =
|
const path =
|
||||||
rootFolderType === FolderType.Archive
|
rootFolderType === FolderType.Archive
|
||||||
? "rooms/archived"
|
? "rooms/archived"
|
||||||
@ -99,7 +107,7 @@ const EmptyFolderContainer = ({
|
|||||||
};
|
};
|
||||||
|
|
||||||
const onInviteUsersClick = () => {
|
const onInviteUsersClick = () => {
|
||||||
if (!isRooms) return;
|
if (!isRoom) return;
|
||||||
|
|
||||||
onClickInviteUsers && onClickInviteUsers(folderId);
|
onClickInviteUsers && onClickInviteUsers(folderId);
|
||||||
};
|
};
|
||||||
@ -140,7 +148,7 @@ const EmptyFolderContainer = ({
|
|||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{isRooms ? (
|
{isRoom ? (
|
||||||
canInviteUsers ? (
|
canInviteUsers ? (
|
||||||
<>
|
<>
|
||||||
<div className="empty-folder_container-links second-description">
|
<div className="empty-folder_container-links second-description">
|
||||||
@ -189,14 +197,14 @@ const EmptyFolderContainer = ({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<EmptyContainer
|
<EmptyContainer
|
||||||
headerText={isRooms ? t("RoomCreated") : t("EmptyScreenFolder")}
|
headerText={isRoom ? t("RoomCreated") : t("EmptyScreenFolder")}
|
||||||
style={{ gridColumnGap: "39px", marginTop: 32 }}
|
style={{ gridColumnGap: "39px", marginTop: 32 }}
|
||||||
descriptionText={
|
descriptionText={
|
||||||
canCreateFiles
|
canCreateFiles
|
||||||
? t("EmptyFolderDecription")
|
? t("EmptyFolderDecription")
|
||||||
: t("EmptyFolderDescriptionUser")
|
: t("EmptyFolderDescriptionUser")
|
||||||
}
|
}
|
||||||
imageSrc={isRooms ? emptyScreenCorporateSvg : emptyScreenAltSvg}
|
imageSrc={isRoom ? emptyScreenCorporateSvg : emptyScreenAltSvg}
|
||||||
buttons={buttons}
|
buttons={buttons}
|
||||||
sectionWidth={sectionWidth}
|
sectionWidth={sectionWidth}
|
||||||
isEmptyFolderContainer={true}
|
isEmptyFolderContainer={true}
|
||||||
@ -218,7 +226,7 @@ export default inject(
|
|||||||
parentId,
|
parentId,
|
||||||
|
|
||||||
id: folderId,
|
id: folderId,
|
||||||
roomType,
|
|
||||||
security,
|
security,
|
||||||
rootFolderType,
|
rootFolderType,
|
||||||
} = selectedFolderStore;
|
} = selectedFolderStore;
|
||||||
@ -229,25 +237,20 @@ export default inject(
|
|||||||
id = elem.id;
|
id = elem.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
const isRooms = !!roomType;
|
|
||||||
|
|
||||||
const { canCreateFiles } = accessRightsStore;
|
const { canCreateFiles } = accessRightsStore;
|
||||||
|
|
||||||
const { onClickInviteUsers } = contextOptionsStore;
|
const { onClickInviteUsers } = contextOptionsStore;
|
||||||
|
|
||||||
const canInviteUsers = isRooms && security?.EditAccess; // skip sub-folders
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
setIsLoading: filesStore.setIsLoading,
|
setIsLoading: filesStore.setIsLoading,
|
||||||
parentId: id ?? parentId,
|
parentId: id ?? parentId,
|
||||||
isRooms,
|
|
||||||
canCreateFiles,
|
canCreateFiles,
|
||||||
canInviteUsers,
|
|
||||||
|
|
||||||
navigationPath,
|
navigationPath,
|
||||||
rootFolderType,
|
rootFolderType,
|
||||||
clearFiles,
|
clearFiles,
|
||||||
|
editAccess: security?.EditAccess,
|
||||||
onClickInviteUsers,
|
onClickInviteUsers,
|
||||||
folderId,
|
folderId,
|
||||||
|
|
||||||
|
@ -402,7 +402,7 @@ export default inject(
|
|||||||
title,
|
title,
|
||||||
myFolderId,
|
myFolderId,
|
||||||
filter,
|
filter,
|
||||||
fetchFiles,
|
|
||||||
isLoading,
|
isLoading,
|
||||||
setIsLoading,
|
setIsLoading,
|
||||||
rootFolderType,
|
rootFolderType,
|
||||||
|
@ -4,6 +4,8 @@ import Button from "@docspace/components/button";
|
|||||||
import { withTranslation } from "react-i18next";
|
import { withTranslation } from "react-i18next";
|
||||||
import toastr from "@docspace/components/toast/toastr";
|
import toastr from "@docspace/components/toast/toastr";
|
||||||
import { inject, observer } from "mobx-react";
|
import { inject, observer } from "mobx-react";
|
||||||
|
import { useNavigate, useLocation } from "react-router-dom";
|
||||||
|
import FilesFilter from "@docspace/common/api/files/filter";
|
||||||
|
|
||||||
const DeleteThirdPartyDialog = (props) => {
|
const DeleteThirdPartyDialog = (props) => {
|
||||||
const {
|
const {
|
||||||
@ -12,8 +14,9 @@ const DeleteThirdPartyDialog = (props) => {
|
|||||||
visible,
|
visible,
|
||||||
providers,
|
providers,
|
||||||
removeItem,
|
removeItem,
|
||||||
fetchFiles,
|
|
||||||
currentFolderId,
|
currentFolderId,
|
||||||
|
|
||||||
deleteThirdParty,
|
deleteThirdParty,
|
||||||
setThirdPartyProviders,
|
setThirdPartyProviders,
|
||||||
setDeleteThirdPartyDialogVisible,
|
setDeleteThirdPartyDialogVisible,
|
||||||
@ -23,6 +26,9 @@ const DeleteThirdPartyDialog = (props) => {
|
|||||||
|
|
||||||
const [isLoading, setIsLoading] = useState(false);
|
const [isLoading, setIsLoading] = useState(false);
|
||||||
|
|
||||||
|
const navigate = useNavigate();
|
||||||
|
const location = useLocation();
|
||||||
|
|
||||||
const onClose = () => setDeleteThirdPartyDialogVisible(false);
|
const onClose = () => setDeleteThirdPartyDialogVisible(false);
|
||||||
|
|
||||||
const onDeleteThirdParty = () => {
|
const onDeleteThirdParty = () => {
|
||||||
@ -46,8 +52,13 @@ const DeleteThirdPartyDialog = (props) => {
|
|||||||
deleteThirdParty(+removeItem.id)
|
deleteThirdParty(+removeItem.id)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
setThirdPartyProviders(newProviders);
|
setThirdPartyProviders(newProviders);
|
||||||
if (currentFolderId) fetchFiles(currentFolderId, null, true, true);
|
if (currentFolderId) {
|
||||||
else {
|
const filter = FilesFilter.getDefault();
|
||||||
|
|
||||||
|
filter.folder = currentFolderId;
|
||||||
|
|
||||||
|
navigate(`${location.pathname}?${filter.toUrlParams()}`);
|
||||||
|
} else {
|
||||||
toastr.success(
|
toastr.success(
|
||||||
t("SuccessDeleteThirdParty", { service: removeItem.title })
|
t("SuccessDeleteThirdParty", { service: removeItem.title })
|
||||||
);
|
);
|
||||||
@ -105,7 +116,7 @@ export default inject(
|
|||||||
}) => {
|
}) => {
|
||||||
const { providers, setThirdPartyProviders, deleteThirdParty } =
|
const { providers, setThirdPartyProviders, deleteThirdParty } =
|
||||||
settingsStore.thirdPartyStore;
|
settingsStore.thirdPartyStore;
|
||||||
const { fetchFiles } = filesStore;
|
const { setIsLoading } = filesStore;
|
||||||
const { selectedThirdPartyAccount: backupConnectionItem } = backup;
|
const { selectedThirdPartyAccount: backupConnectionItem } = backup;
|
||||||
const {
|
const {
|
||||||
deleteThirdPartyDialogVisible: visible,
|
deleteThirdPartyDialogVisible: visible,
|
||||||
@ -115,13 +126,17 @@ export default inject(
|
|||||||
|
|
||||||
const removeItem = backupConnectionItem ?? storeItem;
|
const removeItem = backupConnectionItem ?? storeItem;
|
||||||
|
|
||||||
|
const { id } = selectedFolderStore;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
currentFolderId: selectedFolderStore.id,
|
currentFolderId: id,
|
||||||
|
|
||||||
|
setIsLoadingStore: setIsLoading,
|
||||||
|
|
||||||
providers,
|
providers,
|
||||||
visible,
|
visible,
|
||||||
removeItem,
|
removeItem,
|
||||||
|
|
||||||
fetchFiles,
|
|
||||||
setThirdPartyProviders,
|
setThirdPartyProviders,
|
||||||
deleteThirdParty,
|
deleteThirdParty,
|
||||||
setDeleteThirdPartyDialogVisible,
|
setDeleteThirdPartyDialogVisible,
|
||||||
|
@ -23,6 +23,11 @@ import { combineUrl } from "@docspace/common/utils";
|
|||||||
import config from "PACKAGE_FILE";
|
import config from "PACKAGE_FILE";
|
||||||
import Loaders from "@docspace/common/components/Loaders";
|
import Loaders from "@docspace/common/components/Loaders";
|
||||||
import withLoader from "../../../HOCs/withLoader";
|
import withLoader from "../../../HOCs/withLoader";
|
||||||
|
import {
|
||||||
|
getCategoryTypeByFolderType,
|
||||||
|
getCategoryUrl,
|
||||||
|
} from "SRC_DIR/helpers/utils";
|
||||||
|
import FilesFilter from "@docspace/common/api/files/filter";
|
||||||
|
|
||||||
const SharingBodyStyle = { height: `calc(100vh - 156px)` };
|
const SharingBodyStyle = { height: `calc(100vh - 156px)` };
|
||||||
|
|
||||||
@ -81,8 +86,9 @@ class NewFilesPanel extends React.Component {
|
|||||||
})
|
})
|
||||||
.catch((err) => toastr.error(err))
|
.catch((err) => toastr.error(err))
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
this.setState({ inProgress: false });
|
this.setState({ inProgress: false }, () => {
|
||||||
this.onClose();
|
this.onClose();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -123,21 +129,46 @@ class NewFilesPanel extends React.Component {
|
|||||||
};
|
};
|
||||||
|
|
||||||
onFileClick = (item) => {
|
onFileClick = (item) => {
|
||||||
const { id, fileExst, webUrl, fileType, providerKey } = item;
|
|
||||||
const {
|
const {
|
||||||
filter,
|
id,
|
||||||
|
fileExst,
|
||||||
|
webUrl,
|
||||||
|
fileType,
|
||||||
|
providerKey,
|
||||||
|
rootFolderType,
|
||||||
|
filesCount,
|
||||||
|
foldersCount,
|
||||||
|
title,
|
||||||
|
} = item;
|
||||||
|
const {
|
||||||
setMediaViewerData,
|
setMediaViewerData,
|
||||||
fetchFiles,
|
|
||||||
addFileToRecentlyViewed,
|
addFileToRecentlyViewed,
|
||||||
playlist,
|
playlist,
|
||||||
setCurrentItem,
|
|
||||||
currentFolderId,
|
currentFolderId,
|
||||||
|
setIsLoading,
|
||||||
|
clearFiles,
|
||||||
} = this.props;
|
} = this.props;
|
||||||
|
|
||||||
if (!fileExst) {
|
if (!fileExst) {
|
||||||
fetchFiles(id, filter)
|
const categoryType = getCategoryTypeByFolderType(rootFolderType, id);
|
||||||
.catch((err) => toastr.error(err))
|
const isEmpty = filesCount === 0 && foldersCount === 0;
|
||||||
.finally(() => this.onClose());
|
|
||||||
|
const state = { title, rootFolderType, isEmpty, isRoot: false };
|
||||||
|
setIsLoading(true);
|
||||||
|
clearFiles(isEmpty);
|
||||||
|
|
||||||
|
const url = getCategoryUrl(categoryType, id);
|
||||||
|
|
||||||
|
const filter = FilesFilter.getDefault();
|
||||||
|
filter.folder = id;
|
||||||
|
|
||||||
|
window.DocSpace.navigate(`${url}?${filter.toUrlParams()}`, { state });
|
||||||
|
|
||||||
|
this.setState({ inProgress: false }, () => {
|
||||||
|
this.onClose();
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
const canEdit = [5, 6, 7].includes(fileType); //TODO: maybe dirty
|
const canEdit = [5, 6, 7].includes(fileType); //TODO: maybe dirty
|
||||||
|
|
||||||
@ -165,13 +196,33 @@ class NewFilesPanel extends React.Component {
|
|||||||
|
|
||||||
if (isMedia) {
|
if (isMedia) {
|
||||||
if (currentFolderId !== item.folderId) {
|
if (currentFolderId !== item.folderId) {
|
||||||
fetchFiles(item.folderId, null)
|
const categoryType = getCategoryTypeByFolderType(
|
||||||
.then(() => {
|
rootFolderType,
|
||||||
const mediaItem = { visible: true, id };
|
item.folderId
|
||||||
setMediaViewerData(mediaItem);
|
);
|
||||||
})
|
|
||||||
.catch((err) => toastr.error(err))
|
const state = {
|
||||||
.finally(() => this.onClose());
|
title: "",
|
||||||
|
rootFolderType,
|
||||||
|
isEmpty: false,
|
||||||
|
isRoot: false,
|
||||||
|
};
|
||||||
|
setIsLoading(true);
|
||||||
|
clearFiles(false);
|
||||||
|
|
||||||
|
const url = getCategoryUrl(categoryType, item.folderId);
|
||||||
|
|
||||||
|
const filter = FilesFilter.getDefault();
|
||||||
|
filter.folder = id;
|
||||||
|
|
||||||
|
window.DocSpace.navigate(`${url}?${filter.toUrlParams()}`, { state });
|
||||||
|
|
||||||
|
const mediaItem = { visible: true, id };
|
||||||
|
setMediaViewerData(mediaItem);
|
||||||
|
|
||||||
|
this.setState({ inProgress: false }, () => {
|
||||||
|
this.onClose();
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
const mediaItem = { visible: true, id };
|
const mediaItem = { visible: true, id };
|
||||||
setMediaViewerData(mediaItem);
|
setMediaViewerData(mediaItem);
|
||||||
@ -316,8 +367,6 @@ export default inject(
|
|||||||
settingsStore,
|
settingsStore,
|
||||||
}) => {
|
}) => {
|
||||||
const {
|
const {
|
||||||
fetchFiles,
|
|
||||||
filter,
|
|
||||||
addFileToRecentlyViewed,
|
addFileToRecentlyViewed,
|
||||||
//setIsLoading,
|
//setIsLoading,
|
||||||
isLoading,
|
isLoading,
|
||||||
@ -326,6 +375,8 @@ export default inject(
|
|||||||
//updateFoldersBadge,
|
//updateFoldersBadge,
|
||||||
hasNew,
|
hasNew,
|
||||||
refreshFiles,
|
refreshFiles,
|
||||||
|
clearFiles,
|
||||||
|
setIsLoading,
|
||||||
} = filesStore;
|
} = filesStore;
|
||||||
//const { updateRootBadge } = treeFoldersStore;
|
//const { updateRootBadge } = treeFoldersStore;
|
||||||
const { playlist, setMediaViewerData, setCurrentItem } =
|
const { playlist, setMediaViewerData, setCurrentItem } =
|
||||||
@ -342,7 +393,6 @@ export default inject(
|
|||||||
} = dialogsStore;
|
} = dialogsStore;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
filter,
|
|
||||||
pathParts,
|
pathParts,
|
||||||
visible,
|
visible,
|
||||||
newFiles,
|
newFiles,
|
||||||
@ -354,7 +404,7 @@ export default inject(
|
|||||||
currentFolderId,
|
currentFolderId,
|
||||||
|
|
||||||
//setIsLoading,
|
//setIsLoading,
|
||||||
fetchFiles,
|
|
||||||
setMediaViewerData,
|
setMediaViewerData,
|
||||||
addFileToRecentlyViewed,
|
addFileToRecentlyViewed,
|
||||||
getIcon,
|
getIcon,
|
||||||
@ -369,6 +419,9 @@ export default inject(
|
|||||||
theme: auth.settingsStore.theme,
|
theme: auth.settingsStore.theme,
|
||||||
hasNew,
|
hasNew,
|
||||||
refreshFiles,
|
refreshFiles,
|
||||||
|
|
||||||
|
clearFiles,
|
||||||
|
setIsLoading,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
)(
|
)(
|
||||||
|
@ -108,9 +108,12 @@ const useFiles = ({
|
|||||||
});
|
});
|
||||||
}, 1);
|
}, 1);
|
||||||
|
|
||||||
return;
|
return setIsLoading(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (window.location.href.indexOf("/#preview") > 1)
|
||||||
|
return setIsLoading(false);
|
||||||
|
|
||||||
const isRoomFolder = getObjectByLocation(window.location)?.folder;
|
const isRoomFolder = getObjectByLocation(window.location)?.folder;
|
||||||
|
|
||||||
if (
|
if (
|
||||||
|
@ -75,7 +75,6 @@ const FilesMediaViewer = (props) => {
|
|||||||
fetchFiles(previewFile.folderId).finally(() => {
|
fetchFiles(previewFile.folderId).finally(() => {
|
||||||
setIsLoading(false);
|
setIsLoading(false);
|
||||||
setFirstLoad(false);
|
setFirstLoad(false);
|
||||||
setAlreadyFetchingRooms(false);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}, [previewFile]);
|
}, [previewFile]);
|
||||||
|
@ -337,7 +337,7 @@ class FilesTableHeader extends React.Component {
|
|||||||
};
|
};
|
||||||
|
|
||||||
onFilter = (sortBy) => {
|
onFilter = (sortBy) => {
|
||||||
const { filter, selectedFolderId, setIsLoading, fetchFiles } = this.props;
|
const { filter, setIsLoading } = this.props;
|
||||||
const newFilter = filter.clone();
|
const newFilter = filter.clone();
|
||||||
|
|
||||||
if (newFilter.sortBy !== sortBy) {
|
if (newFilter.sortBy !== sortBy) {
|
||||||
@ -348,7 +348,10 @@ class FilesTableHeader extends React.Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
setIsLoading(true);
|
setIsLoading(true);
|
||||||
fetchFiles(selectedFolderId, newFilter).finally(() => setIsLoading(false));
|
|
||||||
|
window.DocSpace.navigate(
|
||||||
|
`${window.DocSpace.location.pathname}?${newFilter.toUrlParams}`
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
onRoomsFilter = (sortBy) => {
|
onRoomsFilter = (sortBy) => {
|
||||||
@ -426,7 +429,7 @@ export default inject(
|
|||||||
isHeaderChecked,
|
isHeaderChecked,
|
||||||
setIsLoading,
|
setIsLoading,
|
||||||
filter,
|
filter,
|
||||||
fetchFiles,
|
|
||||||
canShare,
|
canShare,
|
||||||
firstElemChecked,
|
firstElemChecked,
|
||||||
headerBorder,
|
headerBorder,
|
||||||
@ -476,7 +479,6 @@ export default inject(
|
|||||||
sortingVisible,
|
sortingVisible,
|
||||||
|
|
||||||
setIsLoading,
|
setIsLoading,
|
||||||
fetchFiles,
|
|
||||||
|
|
||||||
roomsFilter,
|
roomsFilter,
|
||||||
|
|
||||||
|
@ -278,14 +278,14 @@ TileContainer.defaultProps = {
|
|||||||
|
|
||||||
export default inject(({ auth, filesStore, treeFoldersStore }) => {
|
export default inject(({ auth, filesStore, treeFoldersStore }) => {
|
||||||
const { personal } = auth.settingsStore;
|
const { personal } = auth.settingsStore;
|
||||||
const { fetchFiles, filter, setIsLoading } = filesStore;
|
const { filter, setIsLoading } = filesStore;
|
||||||
const { isFavoritesFolder, isRecentFolder } = treeFoldersStore;
|
const { isFavoritesFolder, isRecentFolder } = treeFoldersStore;
|
||||||
|
|
||||||
const isDesc = filter?.sortOrder === "desc";
|
const isDesc = filter?.sortOrder === "desc";
|
||||||
|
|
||||||
return {
|
return {
|
||||||
personal,
|
personal,
|
||||||
fetchFiles,
|
|
||||||
setIsLoading,
|
setIsLoading,
|
||||||
isFavoritesFolder,
|
isFavoritesFolder,
|
||||||
isRecentFolder,
|
isRecentFolder,
|
||||||
|
@ -86,9 +86,7 @@ class ContextOptionsStore {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onOpenFolder = (item) => {
|
onOpenFolder = (item) => {
|
||||||
const { id, folderId, fileExst } = item;
|
this.filesActionsStore.openLocationAction(item);
|
||||||
const locationId = !fileExst ? id : folderId;
|
|
||||||
this.filesActionsStore.openLocationAction(locationId);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
onClickLinkFillForm = (item) => {
|
onClickLinkFillForm = (item) => {
|
||||||
@ -151,10 +149,8 @@ class ContextOptionsStore {
|
|||||||
};
|
};
|
||||||
|
|
||||||
onClickMakeForm = (item, t) => {
|
onClickMakeForm = (item, t) => {
|
||||||
const {
|
const { setConvertPasswordDialogVisible, setFormCreationInfo } =
|
||||||
setConvertPasswordDialogVisible,
|
this.dialogsStore;
|
||||||
setFormCreationInfo,
|
|
||||||
} = this.dialogsStore;
|
|
||||||
const { title, id, folderId, fileExst } = item;
|
const { title, id, folderId, fileExst } = item;
|
||||||
|
|
||||||
const newTitle =
|
const newTitle =
|
||||||
@ -190,8 +186,6 @@ class ContextOptionsStore {
|
|||||||
};
|
};
|
||||||
|
|
||||||
onOpenLocation = (item) => {
|
onOpenLocation = (item) => {
|
||||||
const { parentId, folderId, fileExst } = item;
|
|
||||||
const locationId = !fileExst ? parentId : folderId;
|
|
||||||
this.filesActionsStore.openLocationAction(locationId);
|
this.filesActionsStore.openLocationAction(locationId);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -208,10 +202,8 @@ class ContextOptionsStore {
|
|||||||
};
|
};
|
||||||
|
|
||||||
showVersionHistory = (id, security) => {
|
showVersionHistory = (id, security) => {
|
||||||
const {
|
const { fetchFileVersions, setIsVerHistoryPanel } =
|
||||||
fetchFileVersions,
|
this.versionHistoryStore;
|
||||||
setIsVerHistoryPanel,
|
|
||||||
} = this.versionHistoryStore;
|
|
||||||
|
|
||||||
if (this.treeFoldersStore.isRecycleBinFolder) return;
|
if (this.treeFoldersStore.isRecycleBinFolder) return;
|
||||||
|
|
||||||
@ -241,9 +233,8 @@ class ContextOptionsStore {
|
|||||||
|
|
||||||
lockFile = (item, t) => {
|
lockFile = (item, t) => {
|
||||||
const { id, locked } = item;
|
const { id, locked } = item;
|
||||||
const {
|
const { setSelection: setInfoPanelSelection } =
|
||||||
setSelection: setInfoPanelSelection,
|
this.authStore.infoPanelStore;
|
||||||
} = this.authStore.infoPanelStore;
|
|
||||||
|
|
||||||
this.filesActionsStore
|
this.filesActionsStore
|
||||||
.lockFileAction(id, !locked)
|
.lockFileAction(id, !locked)
|
||||||
@ -408,19 +399,13 @@ class ContextOptionsStore {
|
|||||||
};
|
};
|
||||||
|
|
||||||
onClickDeleteSelectedFolder = (t, isRoom) => {
|
onClickDeleteSelectedFolder = (t, isRoom) => {
|
||||||
const {
|
const { setIsFolderActions, setDeleteDialogVisible, setIsRoomDelete } =
|
||||||
setIsFolderActions,
|
this.dialogsStore;
|
||||||
setDeleteDialogVisible,
|
|
||||||
setIsRoomDelete,
|
|
||||||
} = this.dialogsStore;
|
|
||||||
const { confirmDelete } = this.settingsStore;
|
const { confirmDelete } = this.settingsStore;
|
||||||
const { deleteAction, deleteRoomsAction } = this.filesActionsStore;
|
const { deleteAction, deleteRoomsAction } = this.filesActionsStore;
|
||||||
const { id: selectedFolderId } = this.selectedFolderStore;
|
const { id: selectedFolderId } = this.selectedFolderStore;
|
||||||
const {
|
const { isThirdPartySelection, getFolderInfo, setBufferSelection } =
|
||||||
isThirdPartySelection,
|
this.filesStore;
|
||||||
getFolderInfo,
|
|
||||||
setBufferSelection,
|
|
||||||
} = this.filesStore;
|
|
||||||
|
|
||||||
setIsFolderActions(true);
|
setIsFolderActions(true);
|
||||||
|
|
||||||
@ -462,10 +447,8 @@ class ContextOptionsStore {
|
|||||||
onClickDelete = (item, t) => {
|
onClickDelete = (item, t) => {
|
||||||
const { id, title, providerKey, rootFolderId, isFolder, isRoom } = item;
|
const { id, title, providerKey, rootFolderId, isFolder, isRoom } = item;
|
||||||
|
|
||||||
const {
|
const { setRemoveItem, setDeleteThirdPartyDialogVisible } =
|
||||||
setRemoveItem,
|
this.dialogsStore;
|
||||||
setDeleteThirdPartyDialogVisible,
|
|
||||||
} = this.dialogsStore;
|
|
||||||
|
|
||||||
if (id === this.selectedFolderStore.id) {
|
if (id === this.selectedFolderStore.id) {
|
||||||
this.onClickDeleteSelectedFolder(t, isRoom);
|
this.onClickDeleteSelectedFolder(t, isRoom);
|
||||||
@ -1155,11 +1138,8 @@ class ContextOptionsStore {
|
|||||||
const { personal } = this.authStore.settingsStore;
|
const { personal } = this.authStore.settingsStore;
|
||||||
const { selection, allFilesIsEditing } = this.filesStore;
|
const { selection, allFilesIsEditing } = this.filesStore;
|
||||||
const { setDeleteDialogVisible } = this.dialogsStore;
|
const { setDeleteDialogVisible } = this.dialogsStore;
|
||||||
const {
|
const { isRecycleBinFolder, isRoomsFolder, isArchiveFolder } =
|
||||||
isRecycleBinFolder,
|
this.treeFoldersStore;
|
||||||
isRoomsFolder,
|
|
||||||
isArchiveFolder,
|
|
||||||
} = this.treeFoldersStore;
|
|
||||||
|
|
||||||
const { pinRooms, unpinRooms, deleteRooms } = this.filesActionsStore;
|
const { pinRooms, unpinRooms, deleteRooms } = this.filesActionsStore;
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import { makeAutoObservable } from "mobx";
|
import { makeAutoObservable } from "mobx";
|
||||||
import toastr from "@docspace/components/toast/toastr";
|
import toastr from "@docspace/components/toast/toastr";
|
||||||
import { isMobile } from "react-device-detect";
|
import { isMobile } from "react-device-detect";
|
||||||
|
import FilesFilter from "@docspace/common/api/files/filter";
|
||||||
|
|
||||||
class CreateEditRoomStore {
|
class CreateEditRoomStore {
|
||||||
roomParams = null;
|
roomParams = null;
|
||||||
@ -136,12 +137,12 @@ class CreateEditRoomStore {
|
|||||||
this.onClose();
|
this.onClose();
|
||||||
}
|
}
|
||||||
|
|
||||||
!withPaging && this.onOpenNewRoom(room.id);
|
!withPaging && this.onOpenNewRoom(room);
|
||||||
URL.revokeObjectURL(img.src);
|
URL.revokeObjectURL(img.src);
|
||||||
};
|
};
|
||||||
img.src = url;
|
img.src = url;
|
||||||
});
|
});
|
||||||
} else !withPaging && this.onOpenNewRoom(room.id);
|
} else !withPaging && this.onOpenNewRoom(room);
|
||||||
|
|
||||||
this.roomIsCreated = true;
|
this.roomIsCreated = true;
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
@ -156,20 +157,36 @@ class CreateEditRoomStore {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
onOpenNewRoom = async (id) => {
|
onOpenNewRoom = async (room) => {
|
||||||
const { fetchFiles } = this.filesStore;
|
const { setIsLoading, clearFiles } = this.filesStore;
|
||||||
const { setView, setIsVisible } = this.infoPanelStore;
|
const { setView, setIsVisible } = this.infoPanelStore;
|
||||||
|
|
||||||
setView("info_members");
|
setView("info_members");
|
||||||
fetchFiles(id)
|
|
||||||
.then(() => {
|
const isEmpty = room.filesCount + room.foldersCount === 0;
|
||||||
!isMobile && setIsVisible(true);
|
|
||||||
})
|
const state = {
|
||||||
.finally(() => {
|
isRoot: false,
|
||||||
this.setIsLoading(false);
|
title: room.title,
|
||||||
this.setConfirmDialogIsLoading(false);
|
isEmpty,
|
||||||
this.onClose();
|
rootFolderType: room.rootFolderType,
|
||||||
});
|
};
|
||||||
|
|
||||||
|
const newFilter = FilesFilter.getDefault();
|
||||||
|
newFilter.folder = room.id;
|
||||||
|
setIsLoading(true);
|
||||||
|
clearFiles(isEmpty);
|
||||||
|
|
||||||
|
window.DocSpace.navigate(
|
||||||
|
`rooms/shared/${room.id}/filter?${newFilter.toUrlParams()}`,
|
||||||
|
{ state }
|
||||||
|
);
|
||||||
|
|
||||||
|
!isMobile && setIsVisible(true);
|
||||||
|
|
||||||
|
this.setIsLoading(false);
|
||||||
|
this.setConfirmDialogIsLoading(false);
|
||||||
|
this.onClose();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,6 +46,10 @@ import { getObjectByLocation } from "@docspace/common/utils";
|
|||||||
|
|
||||||
import uniqueid from "lodash/uniqueId";
|
import uniqueid from "lodash/uniqueId";
|
||||||
import FilesFilter from "@docspace/common/api/files/filter";
|
import FilesFilter from "@docspace/common/api/files/filter";
|
||||||
|
import {
|
||||||
|
getCategoryTypeByFolderType,
|
||||||
|
getCategoryUrl,
|
||||||
|
} from "SRC_DIR/helpers/utils";
|
||||||
|
|
||||||
class FilesActionStore {
|
class FilesActionStore {
|
||||||
authStore;
|
authStore;
|
||||||
@ -101,8 +105,9 @@ class FilesActionStore {
|
|||||||
this.uploadDataStore.secondaryProgressDataStore;
|
this.uploadDataStore.secondaryProgressDataStore;
|
||||||
|
|
||||||
const {
|
const {
|
||||||
filter,
|
|
||||||
fetchFiles,
|
fetchFiles,
|
||||||
|
fetchRooms,
|
||||||
|
filter,
|
||||||
roomsFilter,
|
roomsFilter,
|
||||||
|
|
||||||
isEmptyLastPageAfterOperation,
|
isEmptyLastPageAfterOperation,
|
||||||
@ -133,14 +138,16 @@ class FilesActionStore {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (isRoomsFolder || isArchiveFolder || isArchiveFolderRoot) {
|
if (isRoomsFolder || isArchiveFolder || isArchiveFolderRoot) {
|
||||||
const currentFilter = newFilter ? newFilter : roomsFilter.clone();
|
fetchRooms(
|
||||||
|
updatedFolder,
|
||||||
window.DocSpace.navigate(
|
newFilter ? newFilter : roomsFilter.clone()
|
||||||
`${window.DocSpace.location.pathname}?${currentFilter.toUrlParams()}`
|
).finally(() => {
|
||||||
);
|
this.dialogsStore.setIsFolderActions(false);
|
||||||
|
return setTimeout(
|
||||||
this.dialogsStore.setIsFolderActions(false);
|
() => clearSecondaryProgressData(operationId),
|
||||||
return setTimeout(() => clearSecondaryProgressData(operationId), TIMEOUT);
|
TIMEOUT
|
||||||
|
);
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
fetchFiles(
|
fetchFiles(
|
||||||
updatedFolder,
|
updatedFolder,
|
||||||
@ -1224,28 +1231,71 @@ class FilesActionStore {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
openLocationAction = async (locationId) => {
|
openLocationAction = async (item) => {
|
||||||
this.filesStore.setBufferSelection(null);
|
this.filesStore.setBufferSelection(null);
|
||||||
|
|
||||||
const files = await this.filesStore.fetchFiles(locationId, null);
|
const {
|
||||||
return files;
|
id,
|
||||||
|
|
||||||
|
title,
|
||||||
|
rootFolderType,
|
||||||
|
filesCount,
|
||||||
|
foldersCount,
|
||||||
|
} = item;
|
||||||
|
const categoryType = getCategoryTypeByFolderType(rootFolderType, id);
|
||||||
|
|
||||||
|
const isEmpty = filesCount === 0 && foldersCount === 0;
|
||||||
|
|
||||||
|
const state = { title, isEmpty, rootFolderType, isRoot: false };
|
||||||
|
const filter = FilesFilter.getDefault();
|
||||||
|
|
||||||
|
filter.folder = id;
|
||||||
|
|
||||||
|
const url = getCategoryUrl(categoryType, id);
|
||||||
|
|
||||||
|
this.filesStore.clearFiles(isEmpty);
|
||||||
|
this.filesStore.setIsLoading(true);
|
||||||
|
|
||||||
|
window.DocSpace.navigate(`${url}?${filter.toUrlParams()}`, { state });
|
||||||
};
|
};
|
||||||
|
|
||||||
checkAndOpenLocationAction = async (item) => {
|
checkAndOpenLocationAction = async (item) => {
|
||||||
const { filter, setHighlightFile, fetchFiles } = this.filesStore;
|
const { setIsLoading, clearFiles, categoryType } = this.filesStore;
|
||||||
const newFilter = filter.clone();
|
const { myRoomsId, myFolderId, archiveRoomsId, recycleBinFolderId } =
|
||||||
|
this.treeFoldersStore;
|
||||||
|
const { rootFolderType } = this.selectedFolderStore;
|
||||||
|
|
||||||
|
const { ExtraLocationTitle, ExtraLocation, fileExst } = item;
|
||||||
|
|
||||||
|
const isRoot =
|
||||||
|
ExtraLocation === myRoomsId ||
|
||||||
|
ExtraLocation === myFolderId ||
|
||||||
|
ExtraLocation === archiveRoomsId ||
|
||||||
|
ExtraLocation === recycleBinFolderId;
|
||||||
|
|
||||||
|
const isEmpty = false;
|
||||||
|
|
||||||
|
const state = {
|
||||||
|
title: ExtraLocationTitle,
|
||||||
|
isEmpty,
|
||||||
|
isRoot,
|
||||||
|
fileExst,
|
||||||
|
highlightFileId: item.id,
|
||||||
|
isFileHasExst: !item.fileExst,
|
||||||
|
rootFolderType,
|
||||||
|
};
|
||||||
|
|
||||||
|
const url = getCategoryUrl(categoryType, ExtraLocation);
|
||||||
|
|
||||||
|
const newFilter = FilesFilter.getDefault();
|
||||||
|
|
||||||
newFilter.page = 0;
|
|
||||||
newFilter.search = item.title;
|
newFilter.search = item.title;
|
||||||
|
newFilter.folder = ExtraLocation;
|
||||||
|
|
||||||
fetchFiles(item.ExtraLocation, newFilter)
|
clearFiles(isEmpty);
|
||||||
.then(() => {
|
setIsLoading(true);
|
||||||
setHighlightFile({
|
|
||||||
highlightFileId: item.id,
|
window.DocSpace.navigate(`${url}?${newFilter.toUrlParams()}`, { state });
|
||||||
isFileHasExst: !item.fileExst,
|
|
||||||
});
|
|
||||||
})
|
|
||||||
.catch((err) => toastr.error(err));
|
|
||||||
};
|
};
|
||||||
|
|
||||||
setThirdpartyInfo = (providerKey) => {
|
setThirdpartyInfo = (providerKey) => {
|
||||||
@ -2059,11 +2109,15 @@ class FilesActionStore {
|
|||||||
let path = `rooms/shared`;
|
let path = `rooms/shared`;
|
||||||
|
|
||||||
const state = {
|
const state = {
|
||||||
title: this.selectedFolderStore?.navigationPath[0]?.title || "",
|
title:
|
||||||
|
this.selectedFolderStore?.navigationPath[
|
||||||
|
this.selectedFolderStore?.navigationPath.length - 1
|
||||||
|
]?.title || "",
|
||||||
isRoot: true,
|
isRoot: true,
|
||||||
isEmpty: false,
|
isEmpty: false,
|
||||||
rootFolderType: this.selectedFolderStore.rootFolderType,
|
rootFolderType: this.selectedFolderStore.rootFolderType,
|
||||||
};
|
};
|
||||||
|
|
||||||
setIsLoading(true);
|
setIsLoading(true);
|
||||||
clearFiles(false);
|
clearFiles(false);
|
||||||
|
|
||||||
|
@ -1378,6 +1378,13 @@ class FilesStore {
|
|||||||
})
|
})
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
this.setIsLoadedFetchFiles(true);
|
this.setIsLoadedFetchFiles(true);
|
||||||
|
|
||||||
|
if (window?.DocSpace?.location?.state?.highlightFileId) {
|
||||||
|
this.setHighlightFile({
|
||||||
|
highlightFileId: window.DocSpace.location.state.highlightFileId,
|
||||||
|
isFileHasExst: window.DocSpace.location.state.isFileHasExst,
|
||||||
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -390,11 +390,8 @@ class UploadDataStore {
|
|||||||
};
|
};
|
||||||
|
|
||||||
startConversion = async (t, isOpen = false) => {
|
startConversion = async (t, isOpen = false) => {
|
||||||
const {
|
const { isRecentFolder, isFavoritesFolder, isShareFolder } =
|
||||||
isRecentFolder,
|
this.treeFoldersStore;
|
||||||
isFavoritesFolder,
|
|
||||||
isShareFolder,
|
|
||||||
} = this.treeFoldersStore;
|
|
||||||
|
|
||||||
if (!this.converted) return;
|
if (!this.converted) return;
|
||||||
|
|
||||||
@ -777,14 +774,8 @@ class UploadDataStore {
|
|||||||
};
|
};
|
||||||
|
|
||||||
refreshFiles = async (currentFile) => {
|
refreshFiles = async (currentFile) => {
|
||||||
const {
|
const { files, setFiles, folders, setFolders, filter, setFilter } =
|
||||||
files,
|
this.filesStore;
|
||||||
setFiles,
|
|
||||||
folders,
|
|
||||||
setFolders,
|
|
||||||
filter,
|
|
||||||
setFilter,
|
|
||||||
} = this.filesStore;
|
|
||||||
|
|
||||||
const { withPaging } = this.authStore.settingsStore;
|
const { withPaging } = this.authStore.settingsStore;
|
||||||
|
|
||||||
@ -1335,10 +1326,8 @@ class UploadDataStore {
|
|||||||
deleteAfter,
|
deleteAfter,
|
||||||
operationId
|
operationId
|
||||||
) => {
|
) => {
|
||||||
const {
|
const { setSecondaryProgressBarData, clearSecondaryProgressData } =
|
||||||
setSecondaryProgressBarData,
|
this.secondaryProgressDataStore;
|
||||||
clearSecondaryProgressData,
|
|
||||||
} = this.secondaryProgressDataStore;
|
|
||||||
|
|
||||||
return copyToFolder(
|
return copyToFolder(
|
||||||
destFolderId,
|
destFolderId,
|
||||||
@ -1389,10 +1378,8 @@ class UploadDataStore {
|
|||||||
deleteAfter,
|
deleteAfter,
|
||||||
operationId
|
operationId
|
||||||
) => {
|
) => {
|
||||||
const {
|
const { setSecondaryProgressBarData, clearSecondaryProgressData } =
|
||||||
setSecondaryProgressBarData,
|
this.secondaryProgressDataStore;
|
||||||
clearSecondaryProgressData,
|
|
||||||
} = this.secondaryProgressDataStore;
|
|
||||||
|
|
||||||
return moveToFolder(
|
return moveToFolder(
|
||||||
destFolderId,
|
destFolderId,
|
||||||
@ -1493,10 +1480,8 @@ class UploadDataStore {
|
|||||||
};
|
};
|
||||||
|
|
||||||
loopFilesOperations = async (data, pbData, isDownloadAction) => {
|
loopFilesOperations = async (data, pbData, isDownloadAction) => {
|
||||||
const {
|
const { clearSecondaryProgressData, setSecondaryProgressBarData } =
|
||||||
clearSecondaryProgressData,
|
this.secondaryProgressDataStore;
|
||||||
setSecondaryProgressBarData,
|
|
||||||
} = this.secondaryProgressDataStore;
|
|
||||||
|
|
||||||
const label = this.secondaryProgressDataStore.label;
|
const label = this.secondaryProgressDataStore.label;
|
||||||
let progress = data.progress;
|
let progress = data.progress;
|
||||||
@ -1543,11 +1528,8 @@ class UploadDataStore {
|
|||||||
removeFiles,
|
removeFiles,
|
||||||
} = this.filesStore;
|
} = this.filesStore;
|
||||||
|
|
||||||
const {
|
const { clearSecondaryProgressData, setSecondaryProgressBarData, label } =
|
||||||
clearSecondaryProgressData,
|
this.secondaryProgressDataStore;
|
||||||
setSecondaryProgressBarData,
|
|
||||||
label,
|
|
||||||
} = this.secondaryProgressDataStore;
|
|
||||||
const { withPaging } = this.authStore.settingsStore;
|
const { withPaging } = this.authStore.settingsStore;
|
||||||
|
|
||||||
let receivedFolder = destFolderId;
|
let receivedFolder = destFolderId;
|
||||||
@ -1625,12 +1607,8 @@ class UploadDataStore {
|
|||||||
};
|
};
|
||||||
|
|
||||||
clearActiveOperations = (fileIds = [], folderIds = []) => {
|
clearActiveOperations = (fileIds = [], folderIds = []) => {
|
||||||
const {
|
const { activeFiles, activeFolders, setActiveFiles, setActiveFolders } =
|
||||||
activeFiles,
|
this.filesStore;
|
||||||
activeFolders,
|
|
||||||
setActiveFiles,
|
|
||||||
setActiveFolders,
|
|
||||||
} = this.filesStore;
|
|
||||||
|
|
||||||
const newActiveFiles = activeFiles.filter((el) => !fileIds?.includes(el));
|
const newActiveFiles = activeFiles.filter((el) => !fileIds?.includes(el));
|
||||||
const newActiveFolders = activeFolders.filter(
|
const newActiveFolders = activeFolders.filter(
|
||||||
|
Loading…
Reference in New Issue
Block a user