Make weather update interval configurable, was hardcoded to 30 min

Screen.poll_interval was a fixed class attribute the scheduler read
directly -- added Screen.get_poll_interval(settings) so a screen can make
it settings-driven instead. WeatherScreen overrides it to read a new
"update_minutes" field (default 30, matching the old hardcoded value).
New number input on the Weather settings page.

Caught a real edge case while testing: `raw or 30` treats an explicit 0
as falsy and silently replaces it with 30 instead of clamping to the
1-minute floor. Not reachable via the UI (min="1" on the input) but the
method should still be correct standalone -- fixed with an explicit
None-check instead.
This commit is contained in:
Honey committed 2026-07-22 20:14:46 +02:00
1 parent 15c7c38d86
commit 889c062212
5 files changed
+29 -3

No files matched your search

+6
View File
@@ -26,3 +26,9 @@ class Screen(ABC):
"""Settings this screen needs, with defaults, merged under config.json's
settings[self.id] on first run."""
return {}
def get_poll_interval(self, settings: dict) -> int:
"""Seconds between check() calls. Override to make it configurable
via settings (e.g. a user-facing "update every N minutes" field);
defaults to the fixed class-level poll_interval."""
return self.poll_interval