Improved error handling

This commit is contained in:
Administrator 2021-06-07 12:10:41 +02:00
parent 51d51c3a32
commit 1d8f624adf
5 changed files with 32 additions and 29 deletions

View File

@ -13,7 +13,7 @@ function download_file(path, mimetype) {
element.click(); element.click();
document.body.removeChild(element); document.body.removeChild(element);
} else { } else {
create_error_view("Error " + response); try_to_parse_error(response);
} }
}); });
} }
@ -24,7 +24,7 @@ function remove_file(filename) {
create_success_view("Successfully deleted."); create_success_view("Successfully deleted.");
path_changed(); path_changed();
} else { } else {
create_error_view(response); try_to_parse_error(response);
} }
}); });
} }

View File

@ -60,12 +60,10 @@ function create_list_view(dataRoot, elementRoot, url) {
elementRoot.appendChild(list); elementRoot.appendChild(list);
Object.keys(dataRoot).forEach(key => { Object.keys(dataRoot).forEach(key => {
// // Create a text node and a list element to put it in
const listElement = document.createElement('li'); const listElement = document.createElement('li');
listElement.innerHTML = `<span class="folder" onclick="tree_onclick('${url}/${dataRoot[key].text}');">${dataRoot[key].text}</span>`; listElement.innerHTML = `<span class="folder" id='${(url + '/' + dataRoot[key].text).replaceAll('/', '-')}' onclick="tree_onclick('${url}/${dataRoot[key].text}');">${dataRoot[key].text}</span>`;
list.appendChild(listElement); list.appendChild(listElement);
// Continue recursively down now using the current list element
create_list_view(dataRoot[key]['children'], listElement, url + '/' + dataRoot[key].text); create_list_view(dataRoot[key]['children'], listElement, url + '/' + dataRoot[key].text);
}); });
} }

View File

@ -20,6 +20,17 @@ window.addEventListener('popstate', function () {
function path_changed() { function path_changed() {
let curr_dir = get_curr_path(); let curr_dir = get_curr_path();
// TODO show opened directory in tree-view
// let tree_elem = document.getElementById(curr_dir.replaceAll('/', '-'));
// console.log(curr_dir.replaceAll('/', '-'))
// if(tree_elem !== undefined && tree_elem !== null) {
// tree_elem.classList.toggle('folder-open');
//
// if (tree_elem.parentElement.querySelector(".nested") !== null) {
// tree_elem.parentElement.querySelector(".nested").classList.toggle("active");
// }
// }
httpGetAsync(base_url + curr_dir, null, show_files); httpGetAsync(base_url + curr_dir, null, show_files);
} }
@ -38,12 +49,7 @@ function login() {
} else if (code === 401) { } else if (code === 401) {
create_error_view("Wrong username or password!"); create_error_view("Wrong username or password!");
} else { } else {
try { try_to_parse_error(response);
response = JSON.parse(response);
create_error_view(response['error'] + ` <span onclick="this.parentElement.children[1].click(); window.history.pushState('index', 'Filemanager', 'index.html?path='); path_changed();">Return to root directory</span>`);
} catch (e) {
create_error_view(`Unrecoverable error! <span onclick="this.parentElement.children[1].click(); window.history.pushState('index', 'Filemanager', 'index.html?path='); path_changed();">Return to root directory</span>`);
}
} }
}) })
} }
@ -58,12 +64,7 @@ function show_files(response, code) {
create_error_view(`Your session is expired. <span onclick="this.parentElement.children[1].click(); create_login_view();">Log in again</span>`); create_error_view(`Your session is expired. <span onclick="this.parentElement.children[1].click(); create_login_view();">Log in again</span>`);
} else { } else {
// Error // Error
try { try_to_parse_error(response);
response = JSON.parse(response);
create_error_view(response['error'] + ` <span onclick="this.parentElement.children[1].click(); window.history.pushState('index', 'Filemanager', 'index.html?path='); path_changed();">Return to root directory</span>`);
} catch (e) {
create_error_view(`Unrecoverable error! <span onclick="this.parentElement.children[1].click(); window.history.pushState('index', 'Filemanager', 'index.html?path='); path_changed();">Return to root directory</span>`);
}
} }
} }
@ -87,7 +88,7 @@ function save_file(filename, content) {
if (code === 200) { if (code === 200) {
create_success_view("Saved file successfully"); create_success_view("Saved file successfully");
} else { } else {
create_error_view(JSON.parse(response)['error']); try_to_parse_error(response);
} }
}); });
} }
@ -124,12 +125,7 @@ function api_create_folder(name) {
if (code === 200) { if (code === 200) {
create_success_view('Created directory successfully'); create_success_view('Created directory successfully');
} else { } else {
try { try_to_parse_error(response);
response = JSON.parse(response);
create_error_view(response['error']);
} catch (e) {
create_error_view(`Unrecoverable error! <span onclick="this.parentElement.children[1].click(); window.history.pushState('index', 'Filemanager', 'index.html?path='); path_changed();">Return to root directory</span>`);
}
} }
}); });
} }

View File

@ -59,4 +59,13 @@ function get_random_id() {
} }
return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4(); return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();
}
function try_to_parse_error(message) {
try {
message = JSON.parse(message);
create_error_view(message['error'] + ` <span onclick="this.parentElement.children[1].click(); window.history.pushState('index', 'Filemanager', 'index.html?path='); path_changed();">Return to root directory</span>`);
} catch (e) {
create_error_view(`Unrecoverable error! <span onclick="this.parentElement.children[1].click(); window.history.pushState('index', 'Filemanager', 'index.html?path='); path_changed();">Return to root directory</span>`);
}
} }

View File

@ -58,7 +58,7 @@ function create_logout_view() {
document.getElementById('context_menu').parentElement.remove(); document.getElementById('context_menu').parentElement.remove();
create_login_view(); create_login_view();
} else { } else {
create_error_view(response['error'] + ` <span onclick="this.parentElement.children[1].click(); window.history.pushState('index', 'Filemanager', 'index.html?path='); path_changed();">Return to root directory</span>`); try_to_parse_error(response);
} }
}); });
} }
@ -184,7 +184,7 @@ function show_file_view(data, type) {
if (code === 200) { if (code === 200) {
change_modal_content(`<audio controls><source src="data:audio;base64, ${response}">Your browser does not support the audio element.</audio>`); change_modal_content(`<audio controls><source src="data:audio;base64, ${response}">Your browser does not support the audio element.</audio>`);
} else { } else {
create_error_view(response['error'] + ` <span onclick="this.parentElement.children[1].click(); window.history.pushState('index', 'Filemanager', 'index.html?path='); path_changed();">Return to root directory</span>`); try_to_parse_error(response);
} }
}); });
break; break;
@ -194,7 +194,7 @@ function show_file_view(data, type) {
if (code === 200) { if (code === 200) {
change_modal_content(`<img style="width: 100%" src="data:image/png;base64, ${response}" alt="Image">`); change_modal_content(`<img style="width: 100%" src="data:image/png;base64, ${response}" alt="Image">`);
} else { } else {
create_error_view(response['error'] + ` <span onclick="this.parentElement.children[1].click(); window.history.pushState('index', 'Filemanager', 'index.html?path='); path_changed();">Return to root directory</span>`); try_to_parse_error(response);
} }
}); });
break; break;
@ -204,7 +204,7 @@ function show_file_view(data, type) {
if (code === 200) { if (code === 200) {
change_modal_content(`<div style="width: 100%; height: 100%"><textarea id="textarea" style="width: calc(100% - 8px); height: 90%">${response}</textarea><button onclick="save_file(document.getElementById('modal_title').children[0].innerHTML, document.getElementById('textarea').value.trim())" type="button" value="Save">Save</button><button onclick="remove_modal();" type="button" value="Discard">Discard</button></div>`); change_modal_content(`<div style="width: 100%; height: 100%"><textarea id="textarea" style="width: calc(100% - 8px); height: 90%">${response}</textarea><button onclick="save_file(document.getElementById('modal_title').children[0].innerHTML, document.getElementById('textarea').value.trim())" type="button" value="Save">Save</button><button onclick="remove_modal();" type="button" value="Discard">Discard</button></div>`);
} else { } else {
create_error_view(response['error'] + ` <span onclick="this.parentElement.children[1].click(); window.history.pushState('index', 'Filemanager', 'index.html?path='); path_changed();">Return to root directory</span>`); try_to_parse_error(response);
} }
}); });
break; break;
@ -214,7 +214,7 @@ function show_file_view(data, type) {
if (code === 200) { if (code === 200) {
change_modal_content(`<video controls style="width: 100%;"><source src="data:video;base64, ${response}">Your browser does not support the audio element.</video>`); change_modal_content(`<video controls style="width: 100%;"><source src="data:video;base64, ${response}">Your browser does not support the audio element.</video>`);
} else { } else {
create_error_view(response['error'] + ` <span onclick="this.parentElement.children[1].click(); window.history.pushState('index', 'Filemanager', 'index.html?path='); path_changed();">Return to root directory</span>`); try_to_parse_error(response);
} }
}); });
break; break;