Skip to content

Commit 2e94b9c

Browse files
committed
feat: add purge button
1 parent bbaeffe commit 2e94b9c

File tree

4 files changed

+59
-4
lines changed

4 files changed

+59
-4
lines changed

custom_components/auto_backup/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
import homeassistant.helpers.config_validation as cv
1111
import voluptuous as vol
12-
from homeassistant.components.backup.const import DOMAIN as DOMAIN_BACKUP
12+
from homeassistant.components.backup.const import DOMAIN as DOMAIN_BACKUP, DATA_MANAGER
1313
from homeassistant.components.hassio import (
1414
ATTR_FOLDERS,
1515
ATTR_ADDONS,
@@ -155,10 +155,10 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry):
155155
if is_hassio(hass):
156156
handler = SupervisorHandler(getenv("SUPERVISOR"), async_get_clientsession(hass))
157157
else:
158-
handler = BackupHandler(hass, hass.data[DOMAIN_BACKUP])
158+
handler = BackupHandler(hass, hass.data[DATA_MANAGER])
159159

160160
auto_backup = AutoBackup(hass, options, handler)
161-
hass.data.setdefault(DOMAIN, {})[DATA_AUTO_BACKUP] = auto_backup
161+
hass.data[DATA_AUTO_BACKUP] = auto_backup
162162
entry.async_on_unload(entry.add_update_listener(auto_backup.update_listener))
163163

164164
await auto_backup.load_snapshots_expiry()
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
from homeassistant.components.button import ButtonEntity, ButtonEntityDescription
2+
from homeassistant.config_entries import ConfigEntry
3+
from homeassistant.core import HomeAssistant
4+
from homeassistant.helpers.entity_platform import AddEntitiesCallback
5+
6+
from . import AutoBackup
7+
from .const import DATA_AUTO_BACKUP
8+
from .helpers import get_device_info
9+
10+
11+
async def async_setup_entry(
12+
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
13+
):
14+
"""Set up Auto Backup sensors based on a config entry."""
15+
auto_backup = hass.data[DATA_AUTO_BACKUP]
16+
async_add_entities([AutoBackupPurgeButton(entry, auto_backup)])
17+
18+
19+
class AutoBackupPurgeButton(ButtonEntity):
20+
entity_description = ButtonEntityDescription(
21+
key="purge",
22+
name="Purge backups",
23+
icon="mdi:close-circle",
24+
)
25+
26+
_attr_has_entity_name = True
27+
28+
def __init__(self, entry: ConfigEntry, auto_backup: AutoBackup):
29+
self._auto_backup = auto_backup
30+
self._attr_unique_id = self.entity_description.key
31+
self._attr_device_info = get_device_info(entry)
32+
33+
async def async_press(self) -> None:
34+
"""Purge backups."""
35+
await self._auto_backup.purge_backups()

custom_components/auto_backup/const.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
1+
from typing import TYPE_CHECKING
2+
13
from homeassistant.const import Platform
4+
from homeassistant.util.hass_dict import HassKey
5+
6+
if TYPE_CHECKING:
7+
from . import AutoBackup
28

39
DOMAIN = "auto_backup"
4-
DATA_AUTO_BACKUP = "auto_backup"
10+
DATA_AUTO_BACKUP: HassKey[AutoBackup] = HassKey(DOMAIN)
511
UNSUB_LISTENER = "unsub_listener"
612

713
CONF_AUTO_PURGE = "auto_purge"
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
from homeassistant.config_entries import ConfigEntry
2+
from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo
3+
4+
from .const import DOMAIN
5+
6+
7+
def get_device_info(entry: ConfigEntry) -> DeviceInfo:
8+
return DeviceInfo(
9+
entry_type=DeviceEntryType.SERVICE,
10+
configuration_url="https://jcwillox.github.io/hass-auto-backup",
11+
manufacturer="Auto Backup",
12+
identifiers={(DOMAIN, entry.entry_id)},
13+
name=entry.title,
14+
)

0 commit comments

Comments
 (0)