diff --git a/clive/__private/ui/app.py b/clive/__private/ui/app.py index f8c15da749d61bf6daf14b8270736abec6362fd0..c4975138ab5038ed74c3561765e4e526a67f16b5 100644 --- a/clive/__private/ui/app.py +++ b/clive/__private/ui/app.py @@ -163,10 +163,10 @@ class Clive(App[int]): def on_mount(self) -> None: self._refresh_node_data_interval = self.set_interval( - safe_settings.node.refresh_rate_secs, lambda: self.update_data_from_node(), pause=True + safe_settings.node.refresh_rate_secs, self._retrigger_update_data_from_node, pause=True ) self._refresh_alarms_data_interval = self.set_interval( - safe_settings.node.refresh_alarms_rate_secs, lambda: self.update_alarms_data(), pause=True + safe_settings.node.refresh_alarms_rate_secs, self._retrigger_update_alarms_data, pause=True ) self._refresh_beekeeper_wallet_lock_status_interval = self.set_interval( @@ -309,3 +309,14 @@ class Clive(App[int]): loop = asyncio.get_running_loop() # can't use self._loop since it's not set yet for signal_number in [signal.SIGHUP, signal.SIGINT, signal.SIGQUIT, signal.SIGTERM]: loop.add_signal_handler(signal_number, callback) + + def _is_worker_group_empty(self, group: str) -> bool: + return not bool([worker for worker in self.workers if worker.group == group]) + + def _retrigger_update_data_from_node(self) -> None: + if self._is_worker_group_empty("node_data"): + self.update_data_from_node() + + def _retrigger_update_alarms_data(self) -> None: + if self._is_worker_group_empty("alarms_data"): + self.update_alarms_data()