Merge pull request #185 from ONLYOFFICE/bugfix/delete-notification
Bugfix/delete-notification
This commit is contained in:
commit
bd42c2ae6e
@ -83,7 +83,9 @@ class DeleteDialogComponent extends React.Component {
|
||||
fetchFiles,
|
||||
setUpdateTree,
|
||||
} = this.props;
|
||||
const successMessage = t("DeleteSelectedElem");
|
||||
const successMessage = isRecycleBinFolder
|
||||
? t("DeleteFromTrash")
|
||||
: t("DeleteSelectedElem");
|
||||
api.files
|
||||
.getProgress()
|
||||
.then((res) => {
|
||||
|
@ -11,5 +11,6 @@
|
||||
"QuestionDeleteFolder": "Are you sure you want to delete this folder?",
|
||||
"QuestionDeleteElements": "Are you sure you want to delete these elements?",
|
||||
"DeleteOperation": "Deleting",
|
||||
"DeleteSelectedElem": "Selected elements were successfully deleted"
|
||||
"DeleteSelectedElem": "Selected elements were successfully deleted",
|
||||
"DeleteFromTrash": "Selected elements were successfully deleted from trash"
|
||||
}
|
||||
|
@ -12,5 +12,6 @@
|
||||
"QuestionDeleteFolder": "Вы собираетесь удалить эту папку?",
|
||||
"QuestionDeleteElements": "Вы собираетесь удалить эти элементы?",
|
||||
"DeleteOperation": "Удаление",
|
||||
"DeleteSelectedElem": "Выбранные элементы успешно удалены"
|
||||
"DeleteSelectedElem": "Выбранные элементы успешно удалены",
|
||||
"DeleteFromTrash": "Выбранные элементы успешно удалены из корзины"
|
||||
}
|
||||
|
@ -45,7 +45,7 @@ const EmptyTrashDialogComponent = (props) => {
|
||||
|
||||
const loopEmptyTrash = useCallback(
|
||||
(id) => {
|
||||
const successMessage = "Success empty recycle bin";
|
||||
const successMessage = t("SuccessEmptyTrash");
|
||||
api.files
|
||||
.getProgress()
|
||||
.then((res) => {
|
||||
|
@ -5,5 +5,7 @@
|
||||
|
||||
"EmptyTrashDialogQuestion": "Are you sure you want to empty the recycle bin?",
|
||||
"EmptyTrashDialogMessage": "Note: This action can not be undone. Note: removal from your account can not be undone.",
|
||||
"DeleteOperation": "Deleting"
|
||||
"DeleteOperation": "Deleting",
|
||||
"SuccessEmptyTrash": "Success empty recycle bin"
|
||||
|
||||
}
|
||||
|
@ -5,5 +5,6 @@
|
||||
|
||||
"EmptyTrashDialogQuestion": "Вы уверены, что хотите очистить корзину?",
|
||||
"EmptyTrashDialogMessage": "Замечание: Это действие не может быть отменено.",
|
||||
"DeleteOperation": "Удаление"
|
||||
"DeleteOperation": "Удаление",
|
||||
"SuccessEmptyTrash": "Корзина успешно очищена"
|
||||
}
|
||||
|
@ -28,6 +28,8 @@ import {
|
||||
setIsLoading,
|
||||
setSelected,
|
||||
setSharingPanelVisible,
|
||||
setTreeFolders,
|
||||
setUpdateTree,
|
||||
} from "../../../../../store/files/actions";
|
||||
import { TIMEOUT } from "../../../../../helpers/constants";
|
||||
import {
|
||||
@ -56,8 +58,13 @@ import {
|
||||
getIsThirdPartySelection,
|
||||
getIsPrivacyFolder,
|
||||
getOnlyFoldersSelected,
|
||||
getSettingsTreeConfirmDelete,
|
||||
loopTreeFolders,
|
||||
getTreeFolders,
|
||||
} from "../../../../../store/files/selectors";
|
||||
|
||||
const { files } = api;
|
||||
|
||||
const { isAdmin, isDesktopClient, getIsTabletView } = store.auth.selectors;
|
||||
const { FilterType, FileAction } = constants;
|
||||
const { tablet, desktop } = utils.device;
|
||||
@ -356,8 +363,128 @@ class SectionHeaderContent extends React.Component {
|
||||
onOpenSharingPanel = () =>
|
||||
this.props.setSharingPanelVisible(!this.props.sharingPanelVisible);
|
||||
|
||||
onDeleteAction = () =>
|
||||
this.setState({ showDeleteDialog: !this.state.showDeleteDialog });
|
||||
loopDeleteOperation = (id) => {
|
||||
const {
|
||||
currentFolderId,
|
||||
filter,
|
||||
treeFolders,
|
||||
setTreeFolders,
|
||||
isRecycleBin,
|
||||
setSecondaryProgressBarData,
|
||||
clearSecondaryProgressData,
|
||||
t,
|
||||
fetchFiles,
|
||||
setUpdateTree,
|
||||
} = this.props;
|
||||
const successMessage = isRecycleBin
|
||||
? t("DeleteFromTrash")
|
||||
: t("DeleteSelectedElem");
|
||||
api.files
|
||||
.getProgress()
|
||||
.then((res) => {
|
||||
const currentProcess = res.find((x) => x.id === id);
|
||||
if (currentProcess && currentProcess.progress !== 100) {
|
||||
setSecondaryProgressBarData({
|
||||
icon: "trash",
|
||||
percent: currentProcess.progress,
|
||||
label: t("DeleteOperation"),
|
||||
visible: true,
|
||||
alert: false,
|
||||
});
|
||||
setTimeout(() => this.loopDeleteOperation(id), 1000);
|
||||
} else {
|
||||
setSecondaryProgressBarData({
|
||||
icon: "trash",
|
||||
percent: 100,
|
||||
label: t("DeleteOperation"),
|
||||
visible: true,
|
||||
alert: false,
|
||||
});
|
||||
setTimeout(() => clearSecondaryProgressData(), TIMEOUT);
|
||||
fetchFiles(currentFolderId, filter).then((data) => {
|
||||
if (!isRecycleBin) {
|
||||
const path = data.selectedFolder.pathParts.slice(0);
|
||||
const newTreeFolders = treeFolders;
|
||||
const folders = data.selectedFolder.folders;
|
||||
const foldersCount = data.selectedFolder.foldersCount;
|
||||
loopTreeFolders(path, newTreeFolders, folders, foldersCount);
|
||||
setUpdateTree(true);
|
||||
setTreeFolders(newTreeFolders);
|
||||
}
|
||||
toastr.success(successMessage);
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
setSecondaryProgressBarData({
|
||||
visible: true,
|
||||
alert: true,
|
||||
});
|
||||
//toastr.error(err);
|
||||
setTimeout(() => clearSecondaryProgressData(), TIMEOUT);
|
||||
});
|
||||
};
|
||||
|
||||
onDelete = () => {
|
||||
const {
|
||||
isRecycleBin,
|
||||
isPrivacy,
|
||||
t,
|
||||
setSecondaryProgressBarData,
|
||||
clearSecondaryProgressData,
|
||||
selection,
|
||||
} = this.props;
|
||||
|
||||
const deleteAfter = true; //Delete after finished
|
||||
const immediately = isRecycleBin || isPrivacy ? true : false; //Don't move to the Recycle Bin
|
||||
|
||||
const folderIds = [];
|
||||
const fileIds = [];
|
||||
|
||||
let i = 0;
|
||||
while (selection.length !== i) {
|
||||
if (selection[i].fileExst) {
|
||||
fileIds.push(selection[i].id);
|
||||
} else {
|
||||
folderIds.push(selection[i].id);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
|
||||
if (folderIds.length || fileIds.length) {
|
||||
setSecondaryProgressBarData({
|
||||
icon: "trash",
|
||||
visible: true,
|
||||
label: t("DeleteOperation"),
|
||||
percent: 0,
|
||||
alert: false,
|
||||
});
|
||||
|
||||
files
|
||||
.removeFiles(folderIds, fileIds, deleteAfter, immediately)
|
||||
.then((res) => {
|
||||
const id = res[0] && res[0].id ? res[0].id : null;
|
||||
this.loopDeleteOperation(id);
|
||||
})
|
||||
.catch((err) => {
|
||||
setSecondaryProgressBarData({
|
||||
visible: true,
|
||||
alert: true,
|
||||
});
|
||||
//toastr.error(err);
|
||||
setTimeout(() => clearSecondaryProgressData(), TIMEOUT);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
onDeleteAction = () => {
|
||||
//console.log(this.props.confirmDelete);
|
||||
if (this.props.confirmDelete) {
|
||||
this.setState({ showDeleteDialog: !this.state.showDeleteDialog });
|
||||
} else {
|
||||
this.onDelete();
|
||||
}
|
||||
};
|
||||
|
||||
onEmptyTrashAction = () =>
|
||||
this.setState({ showEmptyTrashDialog: !this.state.showEmptyTrashDialog });
|
||||
@ -744,6 +871,8 @@ const mapStateToProps = (state) => {
|
||||
isThirdPartySelection: getIsThirdPartySelection(state),
|
||||
isOnlyFoldersSelected: getOnlyFoldersSelected(state),
|
||||
isTabletView: getIsTabletView(state),
|
||||
confirmDelete: getSettingsTreeConfirmDelete(state),
|
||||
treeFolders: getTreeFolders(state),
|
||||
};
|
||||
};
|
||||
|
||||
@ -755,4 +884,6 @@ export default connect(mapStateToProps, {
|
||||
fetchFiles,
|
||||
setSelected,
|
||||
setSharingPanelVisible,
|
||||
setTreeFolders,
|
||||
setUpdateTree,
|
||||
})(withTranslation()(withRouter(SectionHeaderContent)));
|
||||
|
@ -125,5 +125,7 @@
|
||||
"EncryptedFileCreating": "File <strong>{{itemTitle}}</strong> successfully created",
|
||||
"DeleteThirdParty": "Delete third party",
|
||||
"ThirdPartyInfo": "Change the third party info",
|
||||
"EmptyFile": "Empty file"
|
||||
"EmptyFile": "Empty file",
|
||||
"DeleteSelectedElem": "Selected elements were successfully deleted",
|
||||
"DeleteFromTrash": "Selected elements were successfully deleted from trash"
|
||||
}
|
||||
|
@ -125,5 +125,7 @@
|
||||
"EncryptedFileCreating": "Создан новый файл <strong>{{itemTitle}}</strong>",
|
||||
"DeleteThirdParty": "Отключить сторонний ресурс",
|
||||
"ThirdPartyInfo": "Изменить настройки подключения",
|
||||
"EmptyFile": "Пустой файл"
|
||||
"EmptyFile": "Пустой файл",
|
||||
"DeleteSelectedElem": "Выбранные элементы успешно удалены",
|
||||
"DeleteFromTrash": "Выбранные элементы успешно удалены из корзины"
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user