From 6a9e6412a7afbc0d971513e480c1695e5d97b8df Mon Sep 17 00:00:00 2001
From: Petar Petrov
Date: Mon, 14 Jul 2025 10:33:15 +0300
Subject: [PATCH] abort POST request
---
src/data/zwave_js.ts | 4 +++-
.../zwave_js/dialog-zwave_js-update-firmware-node.ts | 8 ++++++--
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/src/data/zwave_js.ts b/src/data/zwave_js.ts
index 8f756d9d1c..6e46585446 100644
--- a/src/data/zwave_js.ts
+++ b/src/data/zwave_js.ts
@@ -923,7 +923,8 @@ export const uploadFirmwareAndBeginUpdate = async (
hass: HomeAssistant,
device_id: string,
file: File,
- target?: number
+ target?: number,
+ signal?: AbortSignal
) => {
const fd = new FormData();
fd.append("file", file);
@@ -935,6 +936,7 @@ export const uploadFirmwareAndBeginUpdate = async (
{
method: "POST",
body: fd,
+ signal,
}
);
diff --git a/src/panels/config/integrations/integration-panels/zwave_js/dialog-zwave_js-update-firmware-node.ts b/src/panels/config/integrations/integration-panels/zwave_js/dialog-zwave_js-update-firmware-node.ts
index a0073fcaea..6d5ce38d6a 100644
--- a/src/panels/config/integrations/integration-panels/zwave_js/dialog-zwave_js-update-firmware-node.ts
+++ b/src/panels/config/integrations/integration-panels/zwave_js/dialog-zwave_js-update-firmware-node.ts
@@ -198,7 +198,8 @@ class DialogZWaveJSUpdateFirmwareNode extends LitElement {
)}
${beginFirmwareUpdateHTML}
- ${this._uploading && this._nodeStatus.status === NodeStatus.Asleep
+ ${this._uploading &&
+ this._nodeStatus.status === NodeStatus.Asleep
? html`
${this.hass.localize(
"ui.panel.config.zwave_js.update_firmware.device_asleep"
@@ -332,15 +333,18 @@ class DialogZWaveJSUpdateFirmwareNode extends LitElement {
try {
this._subscribeNodeFirmwareUpdate();
await new Promise((resolve, reject) => {
+ const abortController = new AbortController();
this._cancelUpload = () => {
this._cancelUpload = undefined;
+ abortController.abort();
resolve();
};
uploadFirmwareAndBeginUpdate(
this.hass,
this.device!.id,
this._firmwareFile!,
- this._firmwareTarget
+ this._firmwareTarget,
+ abortController.signal
)
.then(() => this._cancelUpload?.())
.catch(reject);