58 lines
1.8 KiB
Python
58 lines
1.8 KiB
Python
"""Update platform for the Immich integration."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from homeassistant.components.update import UpdateEntity
|
|
from homeassistant.core import HomeAssistant
|
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
|
|
|
from .coordinator import ImmichConfigEntry, ImmichDataUpdateCoordinator
|
|
from .entity import ImmichEntity
|
|
|
|
# Coordinator is used to centralize the data updates
|
|
PARALLEL_UPDATES = 0
|
|
|
|
|
|
async def async_setup_entry(
|
|
hass: HomeAssistant,
|
|
entry: ImmichConfigEntry,
|
|
async_add_entities: AddConfigEntryEntitiesCallback,
|
|
) -> None:
|
|
"""Add immich server update entity."""
|
|
coordinator = entry.runtime_data
|
|
|
|
if coordinator.data.server_version_check is not None:
|
|
async_add_entities([ImmichUpdateEntity(coordinator)])
|
|
|
|
|
|
class ImmichUpdateEntity(ImmichEntity, UpdateEntity):
|
|
"""Define Immich update entity."""
|
|
|
|
_attr_translation_key = "update"
|
|
|
|
def __init__(
|
|
self,
|
|
coordinator: ImmichDataUpdateCoordinator,
|
|
) -> None:
|
|
"""Initialize."""
|
|
super().__init__(coordinator)
|
|
self._attr_unique_id = f"{coordinator.config_entry.unique_id}_update"
|
|
|
|
@property
|
|
def installed_version(self) -> str:
|
|
"""Current installed immich server version."""
|
|
return self.coordinator.data.server_about.version
|
|
|
|
@property
|
|
def latest_version(self) -> str | None:
|
|
"""Available new immich server version."""
|
|
assert self.coordinator.data.server_version_check
|
|
return self.coordinator.data.server_version_check.release_version
|
|
|
|
@property
|
|
def release_url(self) -> str | None:
|
|
"""URL to the full release notes of the new immich server version."""
|
|
return (
|
|
f"https://github.com/immich-app/immich/releases/tag/{self.latest_version}"
|
|
)
|