document.getElementById('upload-input').addEventListener('change', async (e) => {
const files = e.target.files;
if (!files.length) return;
const formData = new FormData();
for (let file of files) {
if (!file.name.endsWith('.apk')) {
alert('Only APK files are allowed');
return;
}
formData.append('files', file);
}
const progressBar = document.getElementById('upload-progress');
try {
const response = await fetch('/firmware', {
method: 'POST',
body: formData,
onUploadProgress: (progressEvent) => {
const percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total);
progressBar.style.width = percentCompleted + '%';
}
});
if (!response.ok) throw new Error('Upload failed');
alert('Update successful');
} catch (error) {
console.error('Error uploading files:', error);
alert('Update failed');
} finally {
progressBar.style.width = '0';
e.target.value = ''; // Reset file input
}
});