From 0c35166a7bfb1e5e5ee9d25f38c2c217519c12a1 Mon Sep 17 00:00:00 2001 From: Raman Gupta <7243222+raman325@users.noreply.github.com> Date: Tue, 30 Aug 2022 22:02:13 -0400 Subject: [PATCH] Simplify zwave_js update entity (#77572) --- homeassistant/components/zwave_js/update.py | 24 +++++++++------------ 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/homeassistant/components/zwave_js/update.py b/homeassistant/components/zwave_js/update.py index d179700c724..134c6cc6661 100644 --- a/homeassistant/components/zwave_js/update.py +++ b/homeassistant/components/zwave_js/update.py @@ -67,7 +67,6 @@ class ZWaveNodeFirmwareUpdate(UpdateEntity): """Initialize a Z-Wave device firmware update entity.""" self.driver = driver self.node = node - self.available_firmware_updates: list[FirmwareUpdateInfo] = [] self._latest_version_firmware: FirmwareUpdateInfo | None = None self._status_unsub: Callable[[], None] | None = None @@ -98,12 +97,16 @@ class ZWaveNodeFirmwareUpdate(UpdateEntity): if not self._status_unsub: self._status_unsub = self.node.once("wake up", self._update_on_wake_up) return - self.available_firmware_updates = ( + if available_firmware_updates := ( await self.driver.controller.async_get_available_firmware_updates( self.node, API_KEY_FIRMWARE_UPDATE_SERVICE ) - ) - self._async_process_available_updates(write_state) + ): + self._latest_version_firmware = max( + available_firmware_updates, + key=lambda x: AwesomeVersion(x.version), + ) + self._async_process_available_updates(write_state) @callback def _async_process_available_updates(self, write_state: bool = True) -> None: @@ -114,18 +117,11 @@ class ZWaveNodeFirmwareUpdate(UpdateEntity): """ # If we have an available firmware update that is a higher version than what's # on the node, we should advertise it, otherwise we are on the latest version - if self.available_firmware_updates and AwesomeVersion( - ( - firmware := max( - self.available_firmware_updates, - key=lambda x: AwesomeVersion(x.version), - ) - ).version + if (firmware := self._latest_version_firmware) and AwesomeVersion( + firmware.version ) > AwesomeVersion(self.node.firmware_version): - self._latest_version_firmware = firmware self._attr_latest_version = firmware.version else: - self._latest_version_firmware = None self._attr_latest_version = self._attr_installed_version if write_state: self.async_write_ha_state() @@ -153,7 +149,7 @@ class ZWaveNodeFirmwareUpdate(UpdateEntity): raise HomeAssistantError(err) from err else: self._attr_installed_version = firmware.version - self.available_firmware_updates.remove(firmware) + self._latest_version_firmware = None self._async_process_available_updates() finally: self._attr_in_progress = False