Web: Files: fixed deleteAction func, refactoring
This commit is contained in:
parent
abcf7a5abd
commit
0d3660518b
@ -67,7 +67,7 @@ class DeleteDialogComponent extends React.Component {
|
||||
|
||||
if (!selection.length) return;
|
||||
|
||||
deleteAction(translations, selection).catch((err) => toastr.error(err));
|
||||
deleteAction(translations, selection);
|
||||
};
|
||||
|
||||
onUnsubscribe = () => {
|
||||
|
@ -237,7 +237,7 @@ class SectionHeaderContent extends React.Component {
|
||||
deleteSelectedElem: t("Translations:DeleteSelectedElem"),
|
||||
};
|
||||
|
||||
deleteAction(translations).catch((err) => toastr.error(err));
|
||||
deleteAction(translations);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -56,7 +56,18 @@ class FilesActionStore {
|
||||
}
|
||||
};
|
||||
|
||||
deleteAction = (translations, newSelection = null) => {
|
||||
deleteCB = () => {
|
||||
const {
|
||||
clearSecondaryProgressData,
|
||||
} = this.uploadDataStore.secondaryProgressDataStore;
|
||||
|
||||
const { filter, fetchFiles } = this.filesStore;
|
||||
fetchFiles(this.selectedFolderStore.id, filter, true, true).finally(() =>
|
||||
setTimeout(() => clearSecondaryProgressData(), TIMEOUT)
|
||||
);
|
||||
};
|
||||
|
||||
deleteAction = async (translations, newSelection = null) => {
|
||||
const { isRecycleBinFolder, isPrivacyFolder } = this.treeFoldersStore;
|
||||
|
||||
const selection = newSelection ? newSelection : this.filesStore.selection;
|
||||
@ -66,6 +77,14 @@ class FilesActionStore {
|
||||
clearSecondaryProgressData,
|
||||
} = this.uploadDataStore.secondaryProgressDataStore;
|
||||
|
||||
setSecondaryProgressBarData({
|
||||
icon: "trash",
|
||||
visible: true,
|
||||
percent: 0,
|
||||
label: translations.deleteOperation,
|
||||
alert: false,
|
||||
});
|
||||
|
||||
const deleteAfter = false; //Delete after finished TODO: get from settings
|
||||
const immediately = isRecycleBinFolder || isPrivacyFolder ? true : false; //Don't move to the Recycle Bin
|
||||
|
||||
@ -84,112 +103,70 @@ class FilesActionStore {
|
||||
|
||||
if (folderIds.length || fileIds.length) {
|
||||
this.isMediaOpen();
|
||||
return removeFiles(folderIds, fileIds, deleteAfter, immediately)
|
||||
.then((res) => {
|
||||
const id = res[0] && res[0].id ? res[0].id : null;
|
||||
const currentProcess = res.find((x) => x.id === id);
|
||||
setSecondaryProgressBarData({
|
||||
icon: "trash",
|
||||
visible: true,
|
||||
label: translations.deleteOperation,
|
||||
percent: currentProcess.progress,
|
||||
alert: false,
|
||||
});
|
||||
|
||||
this.loopDeleteOperation(id, translations);
|
||||
})
|
||||
.catch((err) => {
|
||||
setSecondaryProgressBarData({
|
||||
visible: true,
|
||||
alert: true,
|
||||
});
|
||||
setTimeout(() => clearSecondaryProgressData(), TIMEOUT);
|
||||
try {
|
||||
await removeFiles(folderIds, fileIds, deleteAfter, immediately).then(
|
||||
async (res) => {
|
||||
const data = res[0] ? res[0] : null;
|
||||
const pbData = {
|
||||
icon: "trash",
|
||||
label: translations.deleteOperation,
|
||||
};
|
||||
await this.uploadDataStore.loopFilesOperations(
|
||||
data,
|
||||
pbData,
|
||||
this.deleteCB
|
||||
);
|
||||
}
|
||||
);
|
||||
} catch (err) {
|
||||
setSecondaryProgressBarData({
|
||||
visible: true,
|
||||
alert: true,
|
||||
});
|
||||
setTimeout(() => clearSecondaryProgressData(), TIMEOUT);
|
||||
return toastr.error(err.message ? err.message : err);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
loopDeleteOperation = (id, translations) => {
|
||||
const { filter, fetchFiles } = this.filesStore;
|
||||
const { isRecycleBinFolder, setTreeFolders } = this.treeFoldersStore;
|
||||
const {
|
||||
setSecondaryProgressBarData,
|
||||
clearSecondaryProgressData,
|
||||
} = this.uploadDataStore.secondaryProgressDataStore;
|
||||
// loopFilesOperations = (id, translations) => {
|
||||
// const {
|
||||
// setSecondaryProgressBarData,
|
||||
// clearSecondaryProgressData,
|
||||
// } = this.uploadDataStore.secondaryProgressDataStore;
|
||||
|
||||
const successMessage = isRecycleBinFolder
|
||||
? translations.deleteFromTrash
|
||||
: translations.deleteSelectedElem;
|
||||
|
||||
getProgress()
|
||||
.then((res) => {
|
||||
const currentProcess = res.find((x) => x.id === id);
|
||||
if (currentProcess && currentProcess.progress !== 100) {
|
||||
setSecondaryProgressBarData({
|
||||
icon: "trash",
|
||||
percent: currentProcess.progress,
|
||||
label: translations.deleteOperation,
|
||||
visible: true,
|
||||
alert: false,
|
||||
});
|
||||
setTimeout(() => this.loopDeleteOperation(id, translations), 1000);
|
||||
} else {
|
||||
setSecondaryProgressBarData({
|
||||
icon: "trash",
|
||||
percent: 100,
|
||||
label: translations.deleteOperation,
|
||||
visible: true,
|
||||
alert: false,
|
||||
});
|
||||
setTimeout(() => clearSecondaryProgressData(), TIMEOUT);
|
||||
fetchFiles(this.selectedFolderStore.id, filter, true, true);
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
setSecondaryProgressBarData({
|
||||
visible: true,
|
||||
alert: true,
|
||||
});
|
||||
setTimeout(() => clearSecondaryProgressData(), TIMEOUT);
|
||||
});
|
||||
};
|
||||
|
||||
loopFilesOperations = (id, translations) => {
|
||||
const {
|
||||
setSecondaryProgressBarData,
|
||||
clearSecondaryProgressData,
|
||||
} = this.uploadDataStore.secondaryProgressDataStore;
|
||||
|
||||
getProgress()
|
||||
.then((res) => {
|
||||
const currentProcess = res.find((x) => x.id === id);
|
||||
if (currentProcess && currentProcess.progress !== 100) {
|
||||
setSecondaryProgressBarData({
|
||||
icon: "file",
|
||||
percent: currentProcess.progress,
|
||||
label: "", //TODO: add translation if need "MarkAsRead": "Mark all as read",
|
||||
visible: true,
|
||||
alert: false,
|
||||
});
|
||||
setTimeout(() => this.loopFilesOperations(id, translations), 1000);
|
||||
} else {
|
||||
setSecondaryProgressBarData({
|
||||
icon: "file",
|
||||
percent: 100,
|
||||
label: "", //TODO: add translation if need "MarkAsRead": "Mark all as read",
|
||||
visible: true,
|
||||
alert: false,
|
||||
});
|
||||
setTimeout(() => clearSecondaryProgressData(), TIMEOUT);
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
setSecondaryProgressBarData({
|
||||
visible: true,
|
||||
alert: true,
|
||||
});
|
||||
setTimeout(() => clearSecondaryProgressData(), TIMEOUT);
|
||||
});
|
||||
};
|
||||
// getProgress()
|
||||
// .then((res) => {
|
||||
// const currentProcess = res.find((x) => x.id === id);
|
||||
// if (currentProcess && currentProcess.progress !== 100) {
|
||||
// setSecondaryProgressBarData({
|
||||
// icon: "file",
|
||||
// percent: currentProcess.progress,
|
||||
// label: "", //TODO: add translation if need "MarkAsRead": "Mark all as read",
|
||||
// visible: true,
|
||||
// alert: false,
|
||||
// });
|
||||
// setTimeout(() => this.loopFilesOperations(id, translations), 1000);
|
||||
// } else {
|
||||
// setSecondaryProgressBarData({
|
||||
// icon: "file",
|
||||
// percent: 100,
|
||||
// label: "", //TODO: add translation if need "MarkAsRead": "Mark all as read",
|
||||
// visible: true,
|
||||
// alert: false,
|
||||
// });
|
||||
// setTimeout(() => clearSecondaryProgressData(), TIMEOUT);
|
||||
// }
|
||||
// })
|
||||
// .catch((err) => {
|
||||
// setSecondaryProgressBarData({
|
||||
// visible: true,
|
||||
// alert: true,
|
||||
// });
|
||||
// setTimeout(() => clearSecondaryProgressData(), TIMEOUT);
|
||||
// });
|
||||
// };
|
||||
|
||||
getDownloadProgress = (data, label) => {
|
||||
const {
|
||||
@ -366,8 +343,8 @@ class FilesActionStore {
|
||||
this.isMediaOpen();
|
||||
return deleteFile(fileId)
|
||||
.then((res) => {
|
||||
const id = res[0] && res[0].id ? res[0].id : null;
|
||||
this.loopDeleteProgress(id, currentFolderId, false, translations);
|
||||
// const id = res[0] && res[0].id ? res[0].id : null;
|
||||
// this.loopDeleteProgress(id, currentFolderId, translations);
|
||||
})
|
||||
.then(() => toastr.success(translations.successRemoveFile))
|
||||
.catch((err) => {
|
||||
@ -397,63 +374,68 @@ class FilesActionStore {
|
||||
|
||||
return deleteFolder(folderId, currentFolderId)
|
||||
.then((res) => {
|
||||
const id = res[0] && res[0].id ? res[0].id : null;
|
||||
this.loopDeleteProgress(id, currentFolderId, true, translations);
|
||||
//const id = res[0] && res[0].id ? res[0].id : null;
|
||||
//this.loopDeleteProgress(id, currentFolderId, translations);
|
||||
|
||||
const data = res[0] ? res[0] : null;
|
||||
})
|
||||
.then(() => toastr.success(translations.successRemoveFolder))
|
||||
.catch((err) => {
|
||||
toastr.error(err);
|
||||
//toastr.error(err);
|
||||
|
||||
setSecondaryProgressBarData({
|
||||
visible: true,
|
||||
alert: true,
|
||||
});
|
||||
setTimeout(() => clearPrimaryProgressData(), TIMEOUT);
|
||||
setTimeout(() => clearSecondaryProgressData(), TIMEOUT);
|
||||
return Promise.reject(err);
|
||||
});
|
||||
};
|
||||
|
||||
loopDeleteProgress = (id, folderId, isFolder, translations) => {
|
||||
const { filter, fetchFiles } = this.filesStore;
|
||||
const {
|
||||
setSecondaryProgressBarData,
|
||||
clearSecondaryProgressData,
|
||||
} = this.uploadDataStore.secondaryProgressDataStore;
|
||||
// loopDeleteProgress = (id, folderId, translations) => {
|
||||
// const { filter, fetchFiles } = this.filesStore;
|
||||
// const {
|
||||
// setSecondaryProgressBarData,
|
||||
// clearSecondaryProgressData,
|
||||
// } = this.uploadDataStore.secondaryProgressDataStore;
|
||||
|
||||
getProgress().then((res) => {
|
||||
const deleteProgress = res.find((x) => x.id === id);
|
||||
if (deleteProgress && deleteProgress.progress !== 100) {
|
||||
setSecondaryProgressBarData({
|
||||
icon: "trash",
|
||||
visible: true,
|
||||
percent: deleteProgress.progress,
|
||||
label: translations.deleteOperation,
|
||||
alert: false,
|
||||
});
|
||||
setTimeout(
|
||||
() => this.loopDeleteProgress(id, folderId, isFolder, translations),
|
||||
1000
|
||||
);
|
||||
} else {
|
||||
setSecondaryProgressBarData({
|
||||
icon: "trash",
|
||||
visible: true,
|
||||
percent: 100,
|
||||
label: translations.deleteOperation,
|
||||
alert: false,
|
||||
});
|
||||
fetchFiles(folderId, filter, true, true)
|
||||
.catch((err) => {
|
||||
setSecondaryProgressBarData({
|
||||
visible: true,
|
||||
alert: true,
|
||||
});
|
||||
setTimeout(() => clearSecondaryProgressData(), TIMEOUT);
|
||||
})
|
||||
.finally(() =>
|
||||
setTimeout(() => clearSecondaryProgressData(), TIMEOUT)
|
||||
);
|
||||
}
|
||||
});
|
||||
};
|
||||
// getProgress().then((res) => {
|
||||
// const deleteProgress = res.find((x) => x.id === id);
|
||||
// if (deleteProgress && deleteProgress.progress !== 100) {
|
||||
// setSecondaryProgressBarData({
|
||||
// icon: "trash",
|
||||
// visible: true,
|
||||
// percent: deleteProgress.progress,
|
||||
// label: translations.deleteOperation,
|
||||
// alert: false,
|
||||
// });
|
||||
// setTimeout(
|
||||
// () => this.loopDeleteProgress(id, folderId, translations),
|
||||
// 1000
|
||||
// );
|
||||
// } else {
|
||||
// setSecondaryProgressBarData({
|
||||
// icon: "trash",
|
||||
// visible: true,
|
||||
// percent: 100,
|
||||
// label: translations.deleteOperation,
|
||||
// alert: false,
|
||||
// });
|
||||
// fetchFiles(folderId, filter, true, true)
|
||||
// .catch((err) => {
|
||||
// setSecondaryProgressBarData({
|
||||
// visible: true,
|
||||
// alert: true,
|
||||
// });
|
||||
// setTimeout(() => clearSecondaryProgressData(), TIMEOUT);
|
||||
// })
|
||||
// .finally(() =>
|
||||
// setTimeout(() => clearSecondaryProgressData(), TIMEOUT)
|
||||
// );
|
||||
// }
|
||||
// });
|
||||
// };
|
||||
|
||||
lockFileAction = (id, locked) => {
|
||||
const { setFile } = this.filesStore;
|
||||
@ -588,8 +570,8 @@ class FilesActionStore {
|
||||
|
||||
return markAsRead(folderIds, fileId)
|
||||
.then((res) => {
|
||||
const id = res[0] && res[0].id ? res[0].id : null;
|
||||
this.loopFilesOperations(id);
|
||||
//const id = res[0] && res[0].id ? res[0].id : null;
|
||||
//this.loopFilesOperations(id);
|
||||
})
|
||||
.then(() => item && this.setNewBadgeCount(item))
|
||||
.catch((err) => toastr.error(err));
|
||||
|
@ -767,7 +767,10 @@ class UploadDataStore {
|
||||
if (res[0]?.error) return Promise.reject(res[0].error);
|
||||
|
||||
const data = res[0] ? res[0] : null;
|
||||
return this.loopFilesOperations(data, destFolderId, true);
|
||||
const pbData = { icon: "duplicate" };
|
||||
return this.loopFilesOperations(data, pbData, () =>
|
||||
this.moveToCopyToCB(destFolderId, pbData, true)
|
||||
);
|
||||
})
|
||||
.catch((err) => {
|
||||
setSecondaryProgressBarData({
|
||||
@ -802,7 +805,10 @@ class UploadDataStore {
|
||||
)
|
||||
.then((res) => {
|
||||
const data = res[0] ? res[0] : null;
|
||||
return this.loopFilesOperations(data, destFolderId, false);
|
||||
const pbData = { icon: "move" };
|
||||
return this.loopFilesOperations(data, pbData, () =>
|
||||
this.moveToCopyToCB(destFolderId, pbData, false)
|
||||
);
|
||||
})
|
||||
.catch((err) => {
|
||||
setSecondaryProgressBarData({
|
||||
@ -853,9 +859,8 @@ class UploadDataStore {
|
||||
);
|
||||
};
|
||||
|
||||
loopFilesOperations = async (data, destFolderId, isCopy) => {
|
||||
loopFilesOperations = async (data, pbData, operationCB) => {
|
||||
const label = this.secondaryProgressDataStore.label;
|
||||
const treeFolders = this.treeFoldersStore.treeFolders;
|
||||
|
||||
const {
|
||||
clearSecondaryProgressData,
|
||||
@ -875,8 +880,8 @@ class UploadDataStore {
|
||||
progress = item ? item.progress : 100;
|
||||
|
||||
setSecondaryProgressBarData({
|
||||
icon: isCopy ? "duplicate" : "move",
|
||||
label,
|
||||
icon: pbData.icon,
|
||||
label: pbData.label || label,
|
||||
percent: progress,
|
||||
visible: true,
|
||||
alert: false,
|
||||
@ -886,13 +891,25 @@ class UploadDataStore {
|
||||
}
|
||||
|
||||
setSecondaryProgressBarData({
|
||||
icon: isCopy ? "duplicate" : "move",
|
||||
label,
|
||||
icon: pbData.icon,
|
||||
label: pbData.label || label,
|
||||
percent: 100,
|
||||
visible: true,
|
||||
alert: false,
|
||||
});
|
||||
|
||||
operationCB();
|
||||
};
|
||||
|
||||
moveToCopyToCB = (destFolderId, pbData, isCopy) => {
|
||||
const { treeFolders, setTreeFolders } = this.treeFoldersStore;
|
||||
const { fetchFiles, filter } = this.filesStore;
|
||||
const {
|
||||
clearSecondaryProgressData,
|
||||
setSecondaryProgressBarData,
|
||||
label,
|
||||
} = this.secondaryProgressDataStore;
|
||||
|
||||
getFolder(destFolderId).then((data) => {
|
||||
let newTreeFolders = treeFolders;
|
||||
let path = data.pathParts.slice(0);
|
||||
@ -901,39 +918,34 @@ class UploadDataStore {
|
||||
loopTreeFolders(path, newTreeFolders, folders, foldersCount);
|
||||
|
||||
if (!isCopy || destFolderId === this.selectedFolderStore.id) {
|
||||
this.filesStore
|
||||
.fetchFiles(
|
||||
this.selectedFolderStore.id,
|
||||
this.filesStore.filter,
|
||||
true,
|
||||
true
|
||||
)
|
||||
.finally(() => {
|
||||
fetchFiles(this.selectedFolderStore.id, filter, true, true).finally(
|
||||
() => {
|
||||
setTimeout(() => clearSecondaryProgressData(), TIMEOUT);
|
||||
});
|
||||
}
|
||||
);
|
||||
} else {
|
||||
setSecondaryProgressBarData({
|
||||
icon: "duplicate",
|
||||
label,
|
||||
icon: pbData.icon,
|
||||
label: pbData.label || label,
|
||||
percent: 100,
|
||||
visible: true,
|
||||
alert: false,
|
||||
});
|
||||
|
||||
setTimeout(() => clearSecondaryProgressData(), TIMEOUT);
|
||||
this.treeFoldersStore.setTreeFolders(newTreeFolders);
|
||||
setTreeFolders(newTreeFolders);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
getOperationProgress = async (id) => {
|
||||
const promise = new Promise((resolve, reject) => {
|
||||
setTimeout(() => {
|
||||
setTimeout(async () => {
|
||||
try {
|
||||
getProgress().then((res) => {
|
||||
await getProgress().then((res) => {
|
||||
const currentItem = res.find((x) => x.id === id);
|
||||
if (currentItem?.error) {
|
||||
return reject(currentItem.error);
|
||||
reject(currentItem.error);
|
||||
}
|
||||
resolve(currentItem);
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user