Merge branch 'release/rc-v1.2.0' into feature/advanced-security

# Conflicts:
#	packages/client/src/store/FilesStore.js
This commit is contained in:
Tatiana Lopaeva 2022-12-15 16:41:55 +03:00
commit 4b1f4b1d4c
6 changed files with 103 additions and 74 deletions

View File

@ -19,7 +19,6 @@ const PureSettingsItem = ({
setExpandSettingsTree,
setSelectedFolder,
history,
setIsLoading,
t,
showText,
toggleArticleOpen,
@ -27,10 +26,8 @@ const PureSettingsItem = ({
const { setting } = match.params;
React.useEffect(() => {
setIsLoading(true);
setSelectedNode([setting]);
setIsLoading(false);
}, [setting, setIsLoading, setSelectedNode]);
}, [setting, setSelectedNode]);
React.useEffect(() => {
if (setting && !expandedSetting) setExpandSettingsTree(["settings"]);
@ -73,20 +70,13 @@ const SettingsItem = withTranslation(["FilesSettings", "Common"])(
);
export default inject(
({
auth,
filesStore,
settingsStore,
treeFoldersStore,
selectedFolderStore,
}) => {
const { setIsLoading } = filesStore;
({ auth, settingsStore, treeFoldersStore, selectedFolderStore }) => {
const { setSelectedFolder } = selectedFolderStore;
const { setSelectedNode } = treeFoldersStore;
const { expandedSetting, setExpandSettingsTree } = settingsStore;
return {
expandedSetting,
setIsLoading,
setSelectedFolder,
setSelectedNode,
setExpandSettingsTree,

View File

@ -101,13 +101,13 @@ const CreateEvent = ({
setStartValue(newValue);
}
// let tab =
// !isDesktop && extension && open
// ? window.open(
// combineUrl(AppServerConfig.proxyURL, config.homepage, `/doceditor`),
// "_blank"
// )
// : null;
let tab =
!isDesktop && extension && open
? window.open(
combineUrl(AppServerConfig.proxyURL, config.homepage, `/doceditor`),
"_blank"
)
: null;
if (!extension) {
createFolder(parentId, newValue)
@ -135,7 +135,7 @@ const CreateEvent = ({
createdFileId = file.id;
addActiveItems([file.id]);
open && openDocEditor(file.id, file.providerKey, null);
open && openDocEditor(file.id, file.providerKey, tab);
})
.then(() => editCompleteAction(item, type))
.catch((err) => {
@ -185,7 +185,7 @@ const CreateEvent = ({
setCreatedItem({ id: createdFileId, type: "file" });
addActiveItems([file.id]);
return open && openDocEditor(file.id, file.providerKey, null);
return open && openDocEditor(file.id, file.providerKey, tab);
})
.then(() => editCompleteAction(item, type))
.catch((e) => toastr.error(e))
@ -216,12 +216,12 @@ const CreateEvent = ({
true,
false
).then(
() => open && openDocEditor(file.id, file.providerKey, null)
() => open && openDocEditor(file.id, file.providerKey, tab)
);
});
}
return open && openDocEditor(file.id, file.providerKey, null);
return open && openDocEditor(file.id, file.providerKey, tab);
})
.then(() => editCompleteAction(item, type))
.catch((e) => toastr.error(e))

View File

@ -263,6 +263,8 @@ class ContextOptionsStore {
};
gotoDocEditor = (preview = false, item) => {
const { isDesktopClient } = this.authStore.settingsStore;
const { id, providerKey, fileExst } = item;
const urlFormation = preview
@ -274,13 +276,9 @@ class ContextOptionsStore {
: null;
let tab =
!this.authStore.isDesktopClient && fileExst
!isDesktopClient && fileExst
? window.open(
combineUrl(
AppServerConfig.proxyURL,
config.homepage,
`/doceditor?fileId=${id}`
),
combineUrl(AppServerConfig.proxyURL, config.homepage, `/doceditor`),
"_blank"
)
: null;

View File

@ -277,6 +277,7 @@ class FilesActionStore {
this.isMediaOpen();
try {
this.filesStore.setOperationAction(true);
await removeFiles(folderIds, fileIds, deleteAfter, immediately)
.then(async (res) => {
if (res[0]?.error) return Promise.reject(res[0].error);
@ -330,6 +331,8 @@ class FilesActionStore {
});
setTimeout(() => clearSecondaryProgressData(), TIMEOUT);
return toastr.error(err.message ? err.message : err);
} finally {
this.filesStore.setOperationAction(false);
}
}
};
@ -675,24 +678,28 @@ class FilesActionStore {
label: translations?.deleteOperation,
};
this.filesStore.setOperationAction(true);
if (isFile) {
addActiveItems([itemId]);
this.isMediaOpen();
return deleteFile(itemId).then(async (res) => {
if (res[0]?.error) return Promise.reject(res[0].error);
const data = res[0] ? res[0] : null;
await this.uploadDataStore.loopFilesOperations(data, pbData);
return deleteFile(itemId)
.then(async (res) => {
if (res[0]?.error) return Promise.reject(res[0].error);
const data = res[0] ? res[0] : null;
await this.uploadDataStore.loopFilesOperations(data, pbData);
if (withPaging) {
this.updateCurrentFolder([itemId]);
toastr.success(translations.successRemoveFile);
} else {
this.updateFilesAfterDelete();
this.filesStore.removeFiles([itemId], null, () =>
toastr.success(translations.successRemoveFile)
);
}
});
if (withPaging) {
this.updateCurrentFolder([itemId]);
toastr.success(translations.successRemoveFile);
} else {
this.updateFilesAfterDelete();
this.filesStore.removeFiles([itemId], null, () =>
toastr.success(translations.successRemoveFile)
);
}
})
.finally(() => this.filesStore.setOperationAction(false));
} else if (isRoom) {
const items = Array.isArray(itemId) ? itemId : [itemId];
addActiveItems(null, items);
@ -715,23 +722,25 @@ class FilesActionStore {
);
} else {
addActiveItems(null, [itemId]);
return deleteFolder(itemId).then(async (res) => {
if (res[0]?.error) return Promise.reject(res[0].error);
const data = res[0] ? res[0] : null;
await this.uploadDataStore.loopFilesOperations(data, pbData);
return deleteFolder(itemId)
.then(async (res) => {
if (res[0]?.error) return Promise.reject(res[0].error);
const data = res[0] ? res[0] : null;
await this.uploadDataStore.loopFilesOperations(data, pbData);
if (withPaging) {
this.updateCurrentFolder(null, [itemId]);
toastr.success(translations.successRemoveFolder);
} else {
this.updateFilesAfterDelete([itemId]);
this.filesStore.removeFiles(null, [itemId], () =>
toastr.success(translations.successRemoveFolder)
);
}
if (withPaging) {
this.updateCurrentFolder(null, [itemId]);
toastr.success(translations.successRemoveFolder);
} else {
this.updateFilesAfterDelete([itemId]);
this.filesStore.removeFiles(null, [itemId], () =>
toastr.success(translations.successRemoveFolder)
);
}
getIsEmptyTrash();
});
getIsEmptyTrash();
})
.finally(() => this.filesStore.setOperationAction(false));
}
};

View File

@ -26,6 +26,7 @@ import {
import { isDesktop } from "@docspace/components/utils/device";
import { getContextMenuKeysByType } from "SRC_DIR/helpers/plugins";
import { PluginContextMenuItemType } from "SRC_DIR/helpers/plugins/constants";
import debounce from "lodash.debounce";
const { FilesFilter, RoomsFilter } = api;
const storageViewAs = localStorage.getItem("viewAs");
@ -97,6 +98,9 @@ class FilesStore {
isEmptyPage = false;
isLoadedFetchFiles = false;
tempActionFilesIds = [];
operationAction = false;
constructor(
authStore,
selectedFolderStore,
@ -122,7 +126,7 @@ class FilesStore {
socketHelper.on("s:modify-folder", async (opt) => {
console.log("[WS] s:modify-folder", opt);
if (this.isLoading) return;
if (this.isLoading || this.operationAction) return;
switch (opt?.cmd) {
case "create":
@ -197,15 +201,23 @@ class FilesStore {
this.files[foundIndex].title
);
this.setFiles(
this.files.filter((_, index) => {
return index !== foundIndex;
})
);
// this.setFiles(
// this.files.filter((_, index) => {
// return index !== foundIndex;
// })
// );
const newFilter = this.filter.clone();
newFilter.total -= 1;
this.setFilter(newFilter);
// const newFilter = this.filter.clone();
// newFilter.total -= 1;
// this.setFilter(newFilter);
const tempActionFilesIds = JSON.parse(
JSON.stringify(this.tempActionFilesIds)
);
tempActionFilesIds.push(this.files[foundIndex].id);
this.setTempActionFilesIds(tempActionFilesIds);
this.debounceRemoveFiles();
// Hide pagination when deleting files
runInAction(() => {
@ -233,7 +245,10 @@ class FilesStore {
// `selected folder id ${this.selectedFolderStore.id} an changed folder id ${id}`
//);
if (this.selectedFolderStore.id == id) {
if (
this.selectedFolderStore.id == id &&
this.authStore.settingsStore.withPaging //TODO: no longer deletes the folder in other tabs
) {
console.log("[WS] refresh-folder", id);
this.fetchFiles(id, this.filter);
}
@ -311,6 +326,18 @@ class FilesStore {
});
}
debounceRemoveFiles = debounce(() => {
this.removeFiles(this.tempActionFilesIds);
}, 1000);
setTempActionFilesIds = (tempActionFilesIds) => {
this.tempActionFilesIds = tempActionFilesIds;
};
setOperationAction = (operationAction) => {
this.operationAction = operationAction;
};
updateSelectionStatus = (id, status, isEditing) => {
const index = this.selection.findIndex((x) => x.id === id);
@ -1795,9 +1822,13 @@ class FilesStore {
showToast && showToast();
})
.catch(() => {
.catch((err) => {
toastr.error(err);
console.log("Need page reload");
})
.finally(() => {
this.setOperationAction(false);
this.setTempActionFilesIds([]);
});
};

View File

@ -431,7 +431,7 @@ class UploadDataStore {
}
});
// storeOriginalFiles && this.refreshFiles(file);
storeOriginalFiles && this.refreshFiles(file);
if (fileInfo && fileInfo !== "password") {
file.fileInfo = fileInfo;
@ -653,6 +653,8 @@ class UploadDataStore {
}
}
}
this.filesStore.setOperationAction(false);
};
const isFiltered =
@ -694,6 +696,7 @@ class UploadDataStore {
file,
path
) => {
this.filesStore.setOperationAction(true);
const length = requestsDataArray.length;
for (let index = 0; index < length; index++) {
if (
@ -769,9 +772,7 @@ class UploadDataStore {
return Promise.resolve();
} else {
if (currentFile.action === "uploaded") {
if (currentFile?.path?.length > 1) {
this.refreshFiles(currentFile);
}
this.refreshFiles(currentFile);
}
return Promise.resolve();
}