Web: Files: added tree menu update after folder deletion
This commit is contained in:
parent
c09a637758
commit
ad52d25d28
@ -1,3 +1,5 @@
|
||||
import { runInAction } from "mobx";
|
||||
|
||||
export const presentInArray = (array, search, caseInsensitive = false) => {
|
||||
let pattern = caseInsensitive ? search.toLowerCase() : search;
|
||||
const result = array.findIndex((item) => item === pattern);
|
||||
@ -105,36 +107,38 @@ export const loopTreeFolders = (
|
||||
foldersCount,
|
||||
currentFolder
|
||||
) => {
|
||||
const newPath = path.slice();
|
||||
while (newPath.length !== 0) {
|
||||
const newItems = item.find((x) => x.id === newPath[0]);
|
||||
if (!newItems) {
|
||||
return;
|
||||
}
|
||||
newPath.shift();
|
||||
if (newPath.length === 0) {
|
||||
let foldersLength = newItems.folders ? newItems.folders.length : 0;
|
||||
if (folders.length > foldersLength) {
|
||||
addTreeFolder(folders, newItems, foldersCount);
|
||||
} else if (folders.length < foldersLength) {
|
||||
removeTreeFolder(folders, newItems, foldersCount);
|
||||
} else if (
|
||||
folders.length > 0 &&
|
||||
newItems.folders.length > 0 &&
|
||||
currentFolder
|
||||
) {
|
||||
renameTreeFolder(folders, newItems, currentFolder);
|
||||
} else {
|
||||
runInAction(() => {
|
||||
const newPath = path.slice();
|
||||
while (newPath.length !== 0) {
|
||||
const newItems = item.find((x) => x.id === newPath[0]);
|
||||
if (!newItems) {
|
||||
return;
|
||||
}
|
||||
return;
|
||||
newPath.shift();
|
||||
if (newPath.length === 0) {
|
||||
let foldersLength = newItems.folders ? newItems.folders.length : 0;
|
||||
if (folders.length > foldersLength) {
|
||||
addTreeFolder(folders, newItems, foldersCount);
|
||||
} else if (folders.length < foldersLength) {
|
||||
removeTreeFolder(folders, newItems, foldersCount);
|
||||
} else if (
|
||||
folders.length > 0 &&
|
||||
newItems.folders.length > 0 &&
|
||||
currentFolder
|
||||
) {
|
||||
renameTreeFolder(folders, newItems, currentFolder);
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
loopTreeFolders(
|
||||
newPath,
|
||||
newItems.folders,
|
||||
folders,
|
||||
foldersCount,
|
||||
currentFolder
|
||||
);
|
||||
}
|
||||
loopTreeFolders(
|
||||
newPath,
|
||||
newItems.folders,
|
||||
folders,
|
||||
foldersCount,
|
||||
currentFolder
|
||||
);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
@ -11,6 +11,7 @@ import {
|
||||
markAsRead,
|
||||
checkFileConflicts,
|
||||
removeShareFiles,
|
||||
getSubfolders,
|
||||
} from "@appserver/common/api/files";
|
||||
import { ConflictResolveType, FileAction } from "@appserver/common/constants";
|
||||
import { TIMEOUT } from "../helpers/constants";
|
||||
@ -140,7 +141,7 @@ class FilesActionStore {
|
||||
alert: false,
|
||||
});
|
||||
setTimeout(() => clearSecondaryProgressData(), TIMEOUT);
|
||||
fetchFiles(this.selectedFolderStore.id, filter);
|
||||
fetchFiles(this.selectedFolderStore.id, filter, true, true);
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
@ -292,7 +293,7 @@ class FilesActionStore {
|
||||
if (!selectedItem.fileExst && !selectedItem.contentLength) {
|
||||
const path = data.selectedFolder.pathParts;
|
||||
const newTreeFolders = treeFolders;
|
||||
const folders = data.selectedFolder.folders;
|
||||
const folders = await getSubfolders(this.selectedFolderStore.id);
|
||||
loopTreeFolders(path, newTreeFolders, folders, null, newItem);
|
||||
setTreeFolders(newTreeFolders);
|
||||
}
|
||||
|
@ -12,6 +12,7 @@ import history from "@appserver/common/history";
|
||||
import config from "../../package.json";
|
||||
import { combineUrl } from "@appserver/common/utils";
|
||||
import { updateTempContent } from "@appserver/common/utils";
|
||||
import { loopTreeFolders } from "../helpers/files-helpers";
|
||||
|
||||
const { FilesFilter } = api;
|
||||
|
||||
@ -247,12 +248,24 @@ class FilesStore {
|
||||
);
|
||||
};
|
||||
|
||||
fetchFiles = (folderId, filter, clearFilter = true) => {
|
||||
fetchFiles = async (
|
||||
folderId,
|
||||
filter,
|
||||
clearFilter = true,
|
||||
withSubfolders = false
|
||||
) => {
|
||||
const filterData = filter ? filter.clone() : FilesFilter.getDefault();
|
||||
filterData.folder = folderId;
|
||||
const { privacyFolder, setSelectedNode } = this.treeFoldersStore;
|
||||
const {
|
||||
treeFolders,
|
||||
privacyFolder,
|
||||
setSelectedNode,
|
||||
getSubfolders,
|
||||
} = this.treeFoldersStore;
|
||||
setSelectedNode([folderId + ""]);
|
||||
|
||||
const subfolders = withSubfolders ? await getSubfolders(folderId) : [];
|
||||
|
||||
if (privacyFolder && privacyFolder.id === +folderId) {
|
||||
if (!this.settingsStore.isEncryptionSupport) {
|
||||
filterData.total = 0;
|
||||
@ -280,6 +293,15 @@ class FilesStore {
|
||||
api.files
|
||||
.getFolder(folderId, filter)
|
||||
.then((data) => {
|
||||
const isRecycleBinFolder =
|
||||
data.current.rootFolderType === FolderType.TRASH;
|
||||
|
||||
if (!isRecycleBinFolder && withSubfolders) {
|
||||
const path = data.pathParts.slice(0);
|
||||
const foldersCount = data.current.foldersCount;
|
||||
loopTreeFolders(path, treeFolders, subfolders, foldersCount);
|
||||
}
|
||||
|
||||
const isPrivacyFolder =
|
||||
data.current.rootFolderType === FolderType.Privacy;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user