try usng a promise
parent
35d375188e
commit
b39126fdd9
|
@ -4,7 +4,7 @@ var tempID = "_fm_internal_temporary_id",
|
|||
buttons = {},
|
||||
templates = {},
|
||||
selectedItems = [],
|
||||
overlay, clickOverlay,
|
||||
overlay, clickOverlay,
|
||||
webdav = {};
|
||||
|
||||
// Removes an element, if exists, from an array
|
||||
|
@ -122,21 +122,22 @@ function getCSSRule(rules) {
|
|||
// TODO: here, we should create an abstraction layer from the webdav.
|
||||
// We must create functions that do the requests to the webdav backend.
|
||||
// this functions will contain a 'callback' to be used withing the other function.
|
||||
|
||||
webdav.rename = function(oldLink, newLink, callback) {
|
||||
let request = new XMLHttpRequest();
|
||||
|
||||
request.open('MOVE', toWebDavURL(oldLink));
|
||||
request.setRequestHeader('Destination', toWebDavURL(newLink));
|
||||
request.send();
|
||||
request.onreadystatechange = function() {
|
||||
if (request.readyState == 4) {
|
||||
if (typeof callback == 'function') {
|
||||
// This callback argument is a 'success'
|
||||
callback(request.status == 201 || request.status == 204);
|
||||
webdav.move = function(oldLink, newLink) {
|
||||
return new Promise((resolve, reject) => {
|
||||
let request = new XMLHttpRequest();
|
||||
request.open('MOVE', toWebDavURL(oldLink), true);
|
||||
request.setRequestHeader('Destination', toWebDavURL(newLink));
|
||||
request.onload = () => {
|
||||
if (request.status == 201 || request.status == 204) {
|
||||
resolve(request.response);
|
||||
} else {
|
||||
reject(request.statusText);
|
||||
}
|
||||
}
|
||||
}
|
||||
request.onerror = () => reject(request.statusText);
|
||||
request.send();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
@ -257,7 +258,7 @@ function loadNextFolder(event) {
|
|||
|
||||
function moveSelected(event) {
|
||||
event.preventDefault();
|
||||
|
||||
|
||||
// TODO: this only works for ONE file. What if there are more files selected?
|
||||
// TODO: use webdav.rename
|
||||
|
||||
|
|
|
@ -130,23 +130,24 @@ listing.rename = function(event) {
|
|||
let newName = event.currentTarget.querySelector('input').value,
|
||||
newLink = removeLastDirectoryPartOf(link) + "/" + newName,
|
||||
html = buttons.rename.querySelector('i').changeToLoading();
|
||||
closePrompt(event);
|
||||
|
||||
webdav.rename(link, newLink, success => {
|
||||
if (success) {
|
||||
webdav.move(link, newLink)
|
||||
.then(data => {
|
||||
listing.reload(() => {
|
||||
newName = btoa(newName);
|
||||
selectedItems = [newName];
|
||||
document.getElementById(newName).setAttribute("aria-selected", true);
|
||||
listing.handleSelectionChange();
|
||||
});
|
||||
} else {
|
||||
item.querySelector('.name').innerHTML = name;
|
||||
}
|
||||
|
||||
closePrompt(event);
|
||||
buttons.rename.querySelector('i').changeToDone(!success, html);
|
||||
});
|
||||
|
||||
buttons.rename.querySelector('i').changeToDone(false, html);
|
||||
})
|
||||
.catch(error => {
|
||||
item.querySelector('.name').innerHTML = name;
|
||||
buttons.rename.querySelector('i').changeToDone(true, html);
|
||||
});
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue