Web:Client: update fetch files

This commit is contained in:
Timofey Boyko 2023-05-30 17:00:39 +03:00
parent e64f541d22
commit 1b48dadfeb
13 changed files with 269 additions and 158 deletions

View File

@ -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,

View File

@ -402,7 +402,7 @@ export default inject(
title, title,
myFolderId, myFolderId,
filter, filter,
fetchFiles,
isLoading, isLoading,
setIsLoading, setIsLoading,
rootFolderType, rootFolderType,

View File

@ -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,

View File

@ -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,9 +86,10 @@ 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();
}); });
});
}; };
onNewFileClick = (e) => { onNewFileClick = (e) => {
@ -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,
item.folderId
);
const state = {
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 }; const mediaItem = { visible: true, id };
setMediaViewerData(mediaItem); setMediaViewerData(mediaItem);
})
.catch((err) => toastr.error(err)) this.setState({ inProgress: false }, () => {
.finally(() => this.onClose()); 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,
}; };
} }
)( )(

View File

@ -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 (

View File

@ -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]);

View File

@ -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,

View File

@ -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,

View File

@ -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;

View File

@ -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;
const state = {
isRoot: false,
title: room.title,
isEmpty,
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); !isMobile && setIsVisible(true);
})
.finally(() => {
this.setIsLoading(false); this.setIsLoading(false);
this.setConfirmDialogIsLoading(false); this.setConfirmDialogIsLoading(false);
this.onClose(); this.onClose();
});
}; };
} }

View File

@ -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); this.dialogsStore.setIsFolderActions(false);
return setTimeout(() => clearSecondaryProgressData(operationId), TIMEOUT); return setTimeout(
() => clearSecondaryProgressData(operationId),
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;
newFilter.page = 0; const { ExtraLocationTitle, ExtraLocation, fileExst } = item;
newFilter.search = item.title;
fetchFiles(item.ExtraLocation, newFilter) const isRoot =
.then(() => { ExtraLocation === myRoomsId ||
setHighlightFile({ ExtraLocation === myFolderId ||
ExtraLocation === archiveRoomsId ||
ExtraLocation === recycleBinFolderId;
const isEmpty = false;
const state = {
title: ExtraLocationTitle,
isEmpty,
isRoot,
fileExst,
highlightFileId: item.id, highlightFileId: item.id,
isFileHasExst: !item.fileExst, isFileHasExst: !item.fileExst,
}); rootFolderType,
}) };
.catch((err) => toastr.error(err));
const url = getCategoryUrl(categoryType, ExtraLocation);
const newFilter = FilesFilter.getDefault();
newFilter.search = item.title;
newFilter.folder = ExtraLocation;
clearFiles(isEmpty);
setIsLoading(true);
window.DocSpace.navigate(`${url}?${newFilter.toUrlParams()}`, { state });
}; };
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);

View File

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

View File

@ -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(