Fix Bug 62465 - Files.Trash. Ability to repeatedly press the Empty trash button.
This commit is contained in:
parent
cff0bed424
commit
dc0fc261e2
@ -172,6 +172,7 @@ const Items = ({
|
||||
firstLoad,
|
||||
deleteAction,
|
||||
startDrag,
|
||||
emptyTrashInProgress,
|
||||
}) => {
|
||||
useEffect(() => {
|
||||
data.forEach((elem) => {
|
||||
@ -340,7 +341,9 @@ const Items = ({
|
||||
(data) => {
|
||||
const items = data.map((item, index) => {
|
||||
const isTrash = item.rootFolderType === FolderType.TRASH;
|
||||
const showBadge = item.newItems
|
||||
const showBadge = emptyTrashInProgress
|
||||
? false
|
||||
: item.newItems
|
||||
? item.newItems > 0 && true
|
||||
: isTrash && !trashIsEmpty;
|
||||
const labelBadge = showBadge ? item.newItems : null;
|
||||
@ -399,6 +402,7 @@ const Items = ({
|
||||
isAdmin,
|
||||
isVisitor,
|
||||
firstLoad,
|
||||
emptyTrashInProgress,
|
||||
]
|
||||
);
|
||||
|
||||
@ -449,6 +453,7 @@ export default inject(
|
||||
moveDragItems,
|
||||
uploadEmptyFolders,
|
||||
deleteAction,
|
||||
emptyTrashInProgress,
|
||||
} = filesActionsStore;
|
||||
const { setEmptyTrashDialogVisible } = dialogsStore;
|
||||
|
||||
@ -481,6 +486,7 @@ export default inject(
|
||||
rootFolderType,
|
||||
firstLoad,
|
||||
startDrag,
|
||||
emptyTrashInProgress,
|
||||
};
|
||||
}
|
||||
)(withTranslation(["Files", "Common", "Translations"])(observer(Items)));
|
||||
|
@ -58,6 +58,7 @@ class FilesActionStore {
|
||||
isBulkDownload = false;
|
||||
isLoadedSearchFiles = false;
|
||||
isGroupMenuBlocked = false;
|
||||
emptyTrashInProgress = false;
|
||||
|
||||
constructor(
|
||||
authStore,
|
||||
@ -94,8 +95,9 @@ class FilesActionStore {
|
||||
};
|
||||
|
||||
updateCurrentFolder = (fileIds, folderIds, clearSelection, operationId) => {
|
||||
const { clearSecondaryProgressData } =
|
||||
this.uploadDataStore.secondaryProgressDataStore;
|
||||
const {
|
||||
clearSecondaryProgressData,
|
||||
} = this.uploadDataStore.secondaryProgressDataStore;
|
||||
|
||||
const {
|
||||
filter,
|
||||
@ -106,8 +108,11 @@ class FilesActionStore {
|
||||
resetFilterPage,
|
||||
} = this.filesStore;
|
||||
|
||||
const { isRoomsFolder, isArchiveFolder, isArchiveFolderRoot } =
|
||||
this.treeFoldersStore;
|
||||
const {
|
||||
isRoomsFolder,
|
||||
isArchiveFolder,
|
||||
isArchiveFolderRoot,
|
||||
} = this.treeFoldersStore;
|
||||
|
||||
let newFilter;
|
||||
|
||||
@ -204,8 +209,10 @@ class FilesActionStore {
|
||||
//console.log("uploadEmptyFolders", emptyFolders, folderId);
|
||||
|
||||
const { secondaryProgressDataStore } = this.uploadDataStore;
|
||||
const { setSecondaryProgressBarData, clearSecondaryProgressData } =
|
||||
secondaryProgressDataStore;
|
||||
const {
|
||||
setSecondaryProgressBarData,
|
||||
clearSecondaryProgressData,
|
||||
} = secondaryProgressDataStore;
|
||||
|
||||
const operationId = uniqueid("operation_");
|
||||
|
||||
@ -230,8 +237,9 @@ class FilesActionStore {
|
||||
|
||||
updateFilesAfterDelete = (operationId) => {
|
||||
const { setSelected } = this.filesStore;
|
||||
const { clearSecondaryProgressData } =
|
||||
this.uploadDataStore.secondaryProgressDataStore;
|
||||
const {
|
||||
clearSecondaryProgressData,
|
||||
} = this.uploadDataStore.secondaryProgressDataStore;
|
||||
|
||||
setSelected("close");
|
||||
|
||||
@ -245,12 +253,19 @@ class FilesActionStore {
|
||||
withoutDialog = false
|
||||
) => {
|
||||
const { isRecycleBinFolder, isPrivacyFolder } = this.treeFoldersStore;
|
||||
const { addActiveItems, getIsEmptyTrash, bufferSelection } =
|
||||
this.filesStore;
|
||||
const { secondaryProgressDataStore, clearActiveOperations } =
|
||||
this.uploadDataStore;
|
||||
const { setSecondaryProgressBarData, clearSecondaryProgressData } =
|
||||
secondaryProgressDataStore;
|
||||
const {
|
||||
addActiveItems,
|
||||
getIsEmptyTrash,
|
||||
bufferSelection,
|
||||
} = this.filesStore;
|
||||
const {
|
||||
secondaryProgressDataStore,
|
||||
clearActiveOperations,
|
||||
} = this.uploadDataStore;
|
||||
const {
|
||||
setSecondaryProgressBarData,
|
||||
clearSecondaryProgressData,
|
||||
} = secondaryProgressDataStore;
|
||||
const { withPaging } = this.authStore.settingsStore;
|
||||
|
||||
const selection = newSelection
|
||||
@ -375,17 +390,24 @@ class FilesActionStore {
|
||||
loopFilesOperations,
|
||||
clearActiveOperations,
|
||||
} = this.uploadDataStore;
|
||||
const { setSecondaryProgressBarData, clearSecondaryProgressData } =
|
||||
secondaryProgressDataStore;
|
||||
const {
|
||||
setSecondaryProgressBarData,
|
||||
clearSecondaryProgressData,
|
||||
} = secondaryProgressDataStore;
|
||||
const { isRecycleBinFolder } = this.treeFoldersStore;
|
||||
const { addActiveItems, files, folders, getIsEmptyTrash } = this.filesStore;
|
||||
|
||||
const fileIds = files.map((f) => f.id);
|
||||
const folderIds = folders.map((f) => f.id);
|
||||
if (isRecycleBinFolder) addActiveItems(fileIds, folderIds);
|
||||
|
||||
if (isRecycleBinFolder) {
|
||||
addActiveItems(fileIds, folderIds);
|
||||
}
|
||||
|
||||
const operationId = uniqueid("operation_");
|
||||
|
||||
this.emptyTrashInProgress = true;
|
||||
|
||||
setSecondaryProgressBarData({
|
||||
icon: "trash",
|
||||
visible: true,
|
||||
@ -419,6 +441,8 @@ class FilesActionStore {
|
||||
});
|
||||
setTimeout(() => clearSecondaryProgressData(operationId), TIMEOUT);
|
||||
return toastr.error(err.message ? err.message : err);
|
||||
} finally {
|
||||
this.emptyTrashInProgress = false;
|
||||
}
|
||||
};
|
||||
|
||||
@ -428,8 +452,10 @@ class FilesActionStore {
|
||||
loopFilesOperations,
|
||||
clearActiveOperations,
|
||||
} = this.uploadDataStore;
|
||||
const { setSecondaryProgressBarData, clearSecondaryProgressData } =
|
||||
secondaryProgressDataStore;
|
||||
const {
|
||||
setSecondaryProgressBarData,
|
||||
clearSecondaryProgressData,
|
||||
} = secondaryProgressDataStore;
|
||||
const { isArchiveFolder } = this.treeFoldersStore;
|
||||
const { addActiveItems, roomsForDelete } = this.filesStore;
|
||||
|
||||
@ -476,10 +502,14 @@ class FilesActionStore {
|
||||
};
|
||||
|
||||
downloadFiles = async (fileConvertIds, folderIds, translations) => {
|
||||
const { clearActiveOperations, secondaryProgressDataStore } =
|
||||
this.uploadDataStore;
|
||||
const { setSecondaryProgressBarData, clearSecondaryProgressData } =
|
||||
secondaryProgressDataStore;
|
||||
const {
|
||||
clearActiveOperations,
|
||||
secondaryProgressDataStore,
|
||||
} = this.uploadDataStore;
|
||||
const {
|
||||
setSecondaryProgressBarData,
|
||||
clearSecondaryProgressData,
|
||||
} = secondaryProgressDataStore;
|
||||
|
||||
const { addActiveItems } = this.filesStore;
|
||||
const { label } = translations;
|
||||
@ -673,10 +703,14 @@ class FilesActionStore {
|
||||
isThirdParty,
|
||||
isRoom
|
||||
) => {
|
||||
const { secondaryProgressDataStore, clearActiveOperations } =
|
||||
this.uploadDataStore;
|
||||
const { setSecondaryProgressBarData, clearSecondaryProgressData } =
|
||||
secondaryProgressDataStore;
|
||||
const {
|
||||
secondaryProgressDataStore,
|
||||
clearActiveOperations,
|
||||
} = this.uploadDataStore;
|
||||
const {
|
||||
setSecondaryProgressBarData,
|
||||
clearSecondaryProgressData,
|
||||
} = secondaryProgressDataStore;
|
||||
if (
|
||||
this.settingsStore.confirmDelete ||
|
||||
this.treeFoldersStore.isPrivacyFolder ||
|
||||
@ -846,8 +880,10 @@ class FilesActionStore {
|
||||
};
|
||||
|
||||
duplicateAction = (item, label) => {
|
||||
const { setSecondaryProgressBarData, filesCount } =
|
||||
this.uploadDataStore.secondaryProgressDataStore;
|
||||
const {
|
||||
setSecondaryProgressBarData,
|
||||
filesCount,
|
||||
} = this.uploadDataStore.secondaryProgressDataStore;
|
||||
|
||||
this.setSelectedItems();
|
||||
|
||||
@ -1009,14 +1045,22 @@ class FilesActionStore {
|
||||
|
||||
const { setSelectedFolder } = this.selectedFolderStore;
|
||||
|
||||
const { roomsFolder, isRoomsFolder, archiveRoomsId, myRoomsId } =
|
||||
this.treeFoldersStore;
|
||||
const {
|
||||
roomsFolder,
|
||||
isRoomsFolder,
|
||||
archiveRoomsId,
|
||||
myRoomsId,
|
||||
} = this.treeFoldersStore;
|
||||
|
||||
const { secondaryProgressDataStore, clearActiveOperations } =
|
||||
this.uploadDataStore;
|
||||
const {
|
||||
secondaryProgressDataStore,
|
||||
clearActiveOperations,
|
||||
} = this.uploadDataStore;
|
||||
|
||||
const { setSecondaryProgressBarData, clearSecondaryProgressData } =
|
||||
secondaryProgressDataStore;
|
||||
const {
|
||||
setSecondaryProgressBarData,
|
||||
clearSecondaryProgressData,
|
||||
} = secondaryProgressDataStore;
|
||||
|
||||
if (!myRoomsId || !archiveRoomsId) {
|
||||
console.error("Default categories not found");
|
||||
@ -1058,8 +1102,10 @@ class FilesActionStore {
|
||||
|
||||
console.log(pbData.label, { data, res });
|
||||
|
||||
const operationData =
|
||||
await this.uploadDataStore.loopFilesOperations(data, pbData);
|
||||
const operationData = await this.uploadDataStore.loopFilesOperations(
|
||||
data,
|
||||
pbData
|
||||
);
|
||||
|
||||
if (
|
||||
!operationData ||
|
||||
@ -1286,8 +1332,10 @@ class FilesActionStore {
|
||||
// };
|
||||
|
||||
markAsRead = (folderIds, fileIds, item) => {
|
||||
const { setSecondaryProgressBarData, clearSecondaryProgressData } =
|
||||
this.uploadDataStore.secondaryProgressDataStore;
|
||||
const {
|
||||
setSecondaryProgressBarData,
|
||||
clearSecondaryProgressData,
|
||||
} = this.uploadDataStore.secondaryProgressDataStore;
|
||||
|
||||
const operationId = uniqueid("operation_");
|
||||
|
||||
@ -1417,8 +1465,12 @@ class FilesActionStore {
|
||||
};
|
||||
|
||||
isAvailableOption = (option) => {
|
||||
const { canConvertSelected, hasSelection, allFilesIsEditing, selection } =
|
||||
this.filesStore;
|
||||
const {
|
||||
canConvertSelected,
|
||||
hasSelection,
|
||||
allFilesIsEditing,
|
||||
selection,
|
||||
} = this.filesStore;
|
||||
|
||||
const { rootFolderType } = this.selectedFolderStore;
|
||||
|
||||
@ -1536,11 +1588,15 @@ class FilesActionStore {
|
||||
};
|
||||
|
||||
deleteRoomsAction = async (itemId, translations) => {
|
||||
const { secondaryProgressDataStore, clearActiveOperations } =
|
||||
this.uploadDataStore;
|
||||
const {
|
||||
secondaryProgressDataStore,
|
||||
clearActiveOperations,
|
||||
} = this.uploadDataStore;
|
||||
|
||||
const { setSecondaryProgressBarData, clearSecondaryProgressData } =
|
||||
secondaryProgressDataStore;
|
||||
const {
|
||||
setSecondaryProgressBarData,
|
||||
clearSecondaryProgressData,
|
||||
} = secondaryProgressDataStore;
|
||||
|
||||
const operationId = uniqueid("operation_");
|
||||
|
||||
@ -1626,9 +1682,9 @@ class FilesActionStore {
|
||||
id: "menu-download",
|
||||
label: t("Common:Download"),
|
||||
onClick: () =>
|
||||
this.downloadAction(t("Translations:ArchivingData")).catch(
|
||||
(err) => toastr.error(err)
|
||||
),
|
||||
this.downloadAction(
|
||||
t("Translations:ArchivingData")
|
||||
).catch((err) => toastr.error(err)),
|
||||
iconUrl: DownloadReactSvgUrl,
|
||||
};
|
||||
|
||||
@ -1861,8 +1917,10 @@ class FilesActionStore {
|
||||
};
|
||||
|
||||
getRecycleBinFolderOptions = (itemsCollection, t) => {
|
||||
const { setEmptyTrashDialogVisible, setMoveToPanelVisible } =
|
||||
this.dialogsStore;
|
||||
const {
|
||||
setEmptyTrashDialogVisible,
|
||||
setMoveToPanelVisible,
|
||||
} = this.dialogsStore;
|
||||
|
||||
const download = this.getOption("download", t);
|
||||
const downloadAs = this.getOption("downloadAs", t);
|
||||
@ -2036,8 +2094,11 @@ class FilesActionStore {
|
||||
};
|
||||
|
||||
moveToRoomsPage = () => {
|
||||
const { setIsLoading, fetchRooms, setAlreadyFetchingRooms } =
|
||||
this.filesStore;
|
||||
const {
|
||||
setIsLoading,
|
||||
fetchRooms,
|
||||
setAlreadyFetchingRooms,
|
||||
} = this.filesStore;
|
||||
|
||||
const categoryType = getCategoryType(location);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user