async settingsUploadUpdate() { if (!this.uploadFw.filename) { alert('Выберите файл для загрузки'); return; } async function readFileAsArrayBuffer(fileName) { return new Promise((resolve, reject) => { if (!fileName) { reject(`Файл не выбран`); return } const reader = new FileReader(); reader.onload = (e) => { resolve(reader.result) } reader.onerror = (e) => { reject(e) } reader.readAsArrayBuffer(fileName) }) } try { this.submitStatus.firmwareUpload = true this.uploadFw.progress = 0 const blob = await readFileAsArrayBuffer(this.uploadFw.filename) const xhr = new XMLHttpRequest(); await new Promise((resolve) => { xhr.upload.addEventListener("progress", (event) => { if (event.lengthComputable) { this.uploadFw.progress = Math.round((event.loaded / event.total) * 1000) / 10; } }); xhr.addEventListener("loadend", () => { this.uploadFw.progress = 100 const rep = JSON.parse(xhr.responseText); this.uploadFw.sha256 = rep['sha256'] resolve(xhr.readyState === 4 && xhr.status === 200); }); xhr.open("PUT", "/api/firmwareUpdate", true); xhr.setRequestHeader("Content-Type", "application/octet-stream"); xhr.send(blob); }); } catch (e) { alert(`Ошибка загрузки файла: ${e}`); } this.submitStatus.firmwareUpload = false }, async settingsPerformFirmwareUpgrade() { if (this.submitStatus.firmwareUpgrade) { return } this.submitStatus.firmwareUpgrade = true try { await fetch('/api/doFirmwareUpgrade', { method: 'POST' }) } catch (e) { console.log("failed to perform upgrade firmware: ", e) } this.submitStatus.firmwareUpgrade = false }, doModemReboot() { if (this.submitStatus.modemReboot !== null) { return } this.submitStatus.modemReboot = 30 fetch('/api/reboot', { method: 'POST' }).then((r) => {}) },