Push all previous files to repo (26.01.08-LATEST)
This commit is contained in:
119
static/script.js
Normal file
119
static/script.js
Normal file
@@ -0,0 +1,119 @@
|
||||
if (localStorage.getItem("loaded")) {
|
||||
document.getElementById("mirrorLogo").className = "fa-solid fa-circle-dot fa-2xs";
|
||||
document.getElementById("mirrorText").textContent = "drive.fybe.dev";
|
||||
document.getElementById("mirrorLogo").style.color = "#47cc00";
|
||||
} else {
|
||||
setTimeout(() => {
|
||||
document.getElementById("mirrorLogo").style.color = "#47cc00";
|
||||
document.getElementById("mirrorText").textContent = "drive.fybe.dev";
|
||||
setTimeout(() => {
|
||||
document.getElementById("mirrorLogo").className = "fa-solid fa-circle-dot fa-2xs";
|
||||
localStorage.setItem("loaded", true);
|
||||
}, 3000);
|
||||
}, 3000);
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
const form = document.getElementById('uploadForm');
|
||||
if (!form) return;
|
||||
|
||||
const fileInput = document.getElementById('fileUpload');
|
||||
const progress = document.getElementById('uploadProgress');
|
||||
const progressText = document.getElementById('uploadProgressText');
|
||||
const uploadBtn = document.getElementById('uploadBtn');
|
||||
|
||||
form.addEventListener('submit', function(e) {
|
||||
e.preventDefault();
|
||||
if (!fileInput || !fileInput.files || fileInput.files.length === 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
const file = fileInput.files[0];
|
||||
const formData = new FormData();
|
||||
formData.append('file', file);
|
||||
// include reusable checkbox if present
|
||||
const reusable = form.querySelector('input[name="reusable"]');
|
||||
if (reusable && reusable.checked) formData.append('reusable', 'on');
|
||||
|
||||
const xhr = new XMLHttpRequest();
|
||||
xhr.open('POST', form.getAttribute('action'));
|
||||
|
||||
xhr.upload.addEventListener('progress', function(ev) {
|
||||
if (ev.lengthComputable) {
|
||||
const percent = Math.round((ev.loaded / ev.total) * 100);
|
||||
if (progress) {
|
||||
progress.style.display = 'block';
|
||||
progress.value = percent;
|
||||
}
|
||||
if (progressText) {
|
||||
progressText.style.display = 'block';
|
||||
progressText.textContent = percent + '%';
|
||||
}
|
||||
if (uploadBtn) {
|
||||
uploadBtn.classList.add('yellowBtn');
|
||||
uploadBtn.value = '· · ·';
|
||||
uploadBtn.disabled = true;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
xhr.addEventListener('load', function() {
|
||||
if (xhr.status >= 200 && xhr.status < 400) {
|
||||
// Try to extract flash messages from the returned HTML and inject them
|
||||
try {
|
||||
const tmp = document.createElement('div');
|
||||
tmp.innerHTML = xhr.responseText;
|
||||
const newFlashes = tmp.querySelector('ul.flashes');
|
||||
const oldFlashes = document.querySelector('ul.flashes');
|
||||
if (newFlashes) {
|
||||
if (oldFlashes) oldFlashes.replaceWith(newFlashes);
|
||||
else document.body.insertBefore(newFlashes, document.body.firstChild);
|
||||
} else {
|
||||
// fallback to full reload if no flashes present
|
||||
window.location.href = '/upload';
|
||||
return;
|
||||
}
|
||||
} catch (e) {
|
||||
window.location.href = '/upload';
|
||||
return;
|
||||
} finally {
|
||||
if (uploadBtn) {
|
||||
uploadBtn.disabled = false;
|
||||
uploadBtn.classList.remove('yellowBtn');
|
||||
uploadBtn.value = 'Upload';
|
||||
}
|
||||
if (progress) { progress.style.display = 'none'; progress.value = 0; }
|
||||
if (progressText) { progressText.style.display = 'none'; progressText.textContent = '0%'; }
|
||||
// clear file input and reusable checkbox after successful upload
|
||||
if (fileInput) fileInput.value = '';
|
||||
if (reusable && reusable.checked) reusable.checked = false;
|
||||
}
|
||||
} else {
|
||||
// error
|
||||
if (progressText) progressText.textContent = 'Upload failed';
|
||||
if (uploadBtn) {
|
||||
uploadBtn.disabled = false;
|
||||
uploadBtn.classList.remove('yellowBtn');
|
||||
uploadBtn.value = 'Upload';
|
||||
}
|
||||
if (fileInput) fileInput.value = '';
|
||||
if (progress) { progress.style.display = 'none'; progress.value = 0; }
|
||||
if (progressText) progressText.style.display = 'none';
|
||||
}
|
||||
});
|
||||
|
||||
xhr.addEventListener('error', function() {
|
||||
if (progressText) progressText.textContent = 'Upload error';
|
||||
if (uploadBtn) {
|
||||
uploadBtn.disabled = false;
|
||||
uploadBtn.classList.remove('yellowBtn');
|
||||
uploadBtn.value = 'Upload';
|
||||
}
|
||||
if (fileInput) fileInput.value = '';
|
||||
if (progress) { progress.style.display = 'none'; progress.value = 0; }
|
||||
if (progressText) progressText.style.display = 'none';
|
||||
});
|
||||
|
||||
xhr.send(formData);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user