Support retry with optional overwrite

This commit is contained in:
Johannes Zellner
2020-10-22 12:45:05 +02:00
parent f586791c71
commit 4457b5879b
3 changed files with 34 additions and 15 deletions

View File

@@ -216,9 +216,9 @@ app.controller('FileManagerController', ['$scope', '$timeout', 'Client', functio
var folderItem;
try {
folderItem = event.originalEvent.dataTransfer.items[0].webkitGetAsEntry();
if (folderItem.isFile) return uploadFiles(event.originalEvent.dataTransfer.files, targetFolder);
if (folderItem.isFile) return uploadFiles(event.originalEvent.dataTransfer.files, targetFolder, false);
} catch (e) {
return uploadFiles(event.originalEvent.dataTransfer.files, targetFolder);
return uploadFiles(event.originalEvent.dataTransfer.files, targetFolder, false);
}
// if we got here we have a folder drop and a modern browser
@@ -252,7 +252,7 @@ app.controller('FileManagerController', ['$scope', '$timeout', 'Client', functio
if (error) return console.error(error);
uploadFiles(fileList, targetFolder);
uploadFiles(fileList, targetFolder, false);
});
};
@@ -332,13 +332,16 @@ app.controller('FileManagerController', ['$scope', '$timeout', 'Client', functio
countDone: 0,
size: 0,
done: 0,
percentDone: 0
percentDone: 0,
files: [],
targetFolder: ''
};
function uploadFiles(files, targetFolder) {
function uploadFiles(files, targetFolder, overwrite) {
if (!files || !files.length) return;
targetFolder = targetFolder || '';
overwrite = !!overwrite;
// prevent it from getting closed
$('#uploadModal').modal({
@@ -346,6 +349,8 @@ app.controller('FileManagerController', ['$scope', '$timeout', 'Client', functio
keyboard: false
});
$scope.uploadStatus.files = files;
$scope.uploadStatus.targetFolder = targetFolder;
$scope.uploadStatus.error = null;
$scope.uploadStatus.busy = true;
$scope.uploadStatus.count = files.length;
@@ -363,7 +368,7 @@ app.controller('FileManagerController', ['$scope', '$timeout', 'Client', functio
$scope.uploadStatus.fileName = file.name;
Client.filesUpload($scope.appId, filePath, file, function (loaded) {
Client.filesUpload($scope.appId, filePath, file, overwrite, function (loaded) {
$scope.uploadStatus.percentDone = ($scope.uploadStatus.done+loaded) * 100 / $scope.uploadStatus.size;
}, function (error) {
if (error) return callback(error);
@@ -377,9 +382,12 @@ app.controller('FileManagerController', ['$scope', '$timeout', 'Client', functio
}, function (error) {
$scope.uploadStatus.busy = false;
if (error) {
if (error && error.statusCode === 409) {
$scope.uploadStatus.error = 'exists';
return;
} else if (error) {
console.error(error);
$scope.uploadStatus.error = 'Failed to upload one or more files. Please try again.';
$scope.uploadStatus.error = 'generic';
return;
}
@@ -390,17 +398,23 @@ app.controller('FileManagerController', ['$scope', '$timeout', 'Client', functio
$scope.uploadStatus.size = 0;
$scope.uploadStatus.done = 0;
$scope.uploadStatus.percentDone = 100;
$scope.uploadStatus.files = [];
$scope.uploadStatus.targetFolder = '';
$scope.refresh();
});
}
$scope.retryUpload = function (overwrite) {
uploadFiles($scope.uploadStatus.files, $scope.uploadStatus.targetFolder, !!overwrite);
};
// file upload
$('#uploadFileInput').on('change', function (e) { uploadFiles(e.target.files || []); });
$('#uploadFileInput').on('change', function (e) { uploadFiles(e.target.files || [], '', false); });
$scope.onUploadFile = function () { $('#uploadFileInput').click(); };
// folder upload
$('#uploadFolderInput').on('change', function (e ) { uploadFiles(e.target.files || []); });
$('#uploadFolderInput').on('change', function (e ) { uploadFiles(e.target.files || [], '', false); });
$scope.onUploadFolder = function () { $('#uploadFolderInput').click(); };
$scope.newDirectory = {
@@ -459,7 +473,7 @@ app.controller('FileManagerController', ['$scope', '$timeout', 'Client', functio
var filePath = sanitize($scope.cwd + '/' + $scope.newFile.name);
Client.filesUpload($scope.appId, filePath, new File([], $scope.newFile.name), function () {}, function (error) {
Client.filesUpload($scope.appId, filePath, new File([], $scope.newFile.name), false, function () {}, function (error) {
$scope.newFile.busy = false;
if (error && error.statusCode === 409) return $scope.newFile.error = 'Already exists';
if (error) return Client.error(error);
@@ -569,7 +583,7 @@ app.controller('FileManagerController', ['$scope', '$timeout', 'Client', functio
var filePath = sanitize($scope.cwd + '/' + $scope.textEditor.entry.fileName);
var file = new File([newContent], 'file');
Client.filesUpload($scope.appId, filePath, file, function () {}, function (error) {
Client.filesUpload($scope.appId, filePath, file, true, function () {}, function (error) {
if (error) return Client.error(error);
$timeout(function () {