1 """Support for RSS/Atom feeds."""
3 from __future__
import annotations
5 import voluptuous
as vol
15 from .const
import CONF_MAX_ENTRIES, DEFAULT_MAX_ENTRIES, DEFAULT_SCAN_INTERVAL, DOMAIN
16 from .coordinator
import FeedReaderCoordinator, StoredData
18 type FeedReaderConfigEntry = ConfigEntry[FeedReaderCoordinator]
22 MY_KEY: HassKey[StoredData] =
HassKey(DOMAIN)
24 CONFIG_SCHEMA = vol.Schema(
26 cv.deprecated(DOMAIN),
30 vol.Required(CONF_URLS): vol.All(cv.ensure_list, [cv.url]),
32 CONF_SCAN_INTERVAL, default=DEFAULT_SCAN_INTERVAL
35 CONF_MAX_ENTRIES, default=DEFAULT_MAX_ENTRIES
41 extra=vol.ALLOW_EXTRA,
45 async
def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
46 """Set up the Feedreader component."""
48 for url
in config[DOMAIN][CONF_URLS]:
49 hass.async_create_task(
50 hass.config_entries.flow.async_init(
52 context={
"source": SOURCE_IMPORT},
55 CONF_MAX_ENTRIES: config[DOMAIN][CONF_MAX_ENTRIES],
63 f
"deprecated_yaml_{DOMAIN}",
64 breaks_in_ha_version=
"2025.1.0",
68 severity=IssueSeverity.WARNING,
69 translation_key=
"deprecated_yaml",
70 translation_placeholders={
72 "integration_title":
"Feedreader",
80 """Set up Feedreader from a config entry."""
81 storage = hass.data.setdefault(MY_KEY,
StoredData(hass))
82 if not storage.is_initialized:
83 await storage.async_setup()
88 entry.options[CONF_MAX_ENTRIES],
92 await coordinator.async_setup()
94 entry.runtime_data = coordinator
98 await hass.config_entries.async_forward_entry_setups(entry, [Platform.EVENT])
100 await coordinator.async_config_entry_first_refresh()
102 entry.async_on_unload(entry.add_update_listener(_async_update_listener))
108 """Unload a config entry."""
109 entries = hass.config_entries.async_entries(
110 DOMAIN, include_disabled=
False, include_ignore=
False
113 if len(entries) == 1:
114 hass.data.pop(MY_KEY)
115 return await hass.config_entries.async_unload_platforms(entry, Platform.EVENT)
119 hass: HomeAssistant, entry: FeedReaderConfigEntry
121 """Handle reconfiguration."""
122 await hass.config_entries.async_reload(entry.entry_id)
None _async_update_listener(HomeAssistant hass, FeedReaderConfigEntry entry)
bool async_setup(HomeAssistant hass, ConfigType config)
bool async_setup_entry(HomeAssistant hass, FeedReaderConfigEntry entry)
bool async_unload_entry(HomeAssistant hass, FeedReaderConfigEntry entry)
None async_create_issue(HomeAssistant hass, str entry_id)