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);