From 3ba929a10742f733ebcb5835a39428428caae96d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Mateusz=20=C5=BBebrak?= <mzebrak@syncad.com>
Date: Tue, 25 Mar 2025 13:42:08 +0100
Subject: [PATCH] Create methods for pausing/resuming all app timers

---
 clive/__private/ui/app.py | 18 ++++++++++++------
 tests/tui/conftest.py     |  4 +---
 2 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/clive/__private/ui/app.py b/clive/__private/ui/app.py
index 7c067ca069..31ee7a602c 100644
--- a/clive/__private/ui/app.py
+++ b/clive/__private/ui/app.py
@@ -263,6 +263,16 @@ class Clive(App[int]):
     def resume_refresh_beekeeper_wallet_lock_status_interval(self) -> None:
         self._refresh_beekeeper_wallet_lock_status_interval.resume()
 
+    def pause_periodic_intervals(self) -> None:
+        self.pause_refresh_node_data_interval()
+        self.pause_refresh_alarms_data_interval()
+        self.pause_refresh_beekeeper_wallet_lock_status_interval()
+
+    def resume_periodic_intervals(self) -> None:
+        self.resume_refresh_node_data_interval()
+        self.resume_refresh_alarms_data_interval()
+        self.resume_refresh_beekeeper_wallet_lock_status_interval()
+
     def trigger_profile_watchers(self) -> None:
         self.world.mutate_reactive(TUIWorld.profile_reactive)  # type: ignore[arg-type]
 
@@ -432,9 +442,7 @@ class Clive(App[int]):
         if source == "beekeeper_wallet_lock_status_update_worker":
             self.notify("Switched to the LOCKED mode due to timeout.", timeout=10)
 
-        self.pause_refresh_node_data_interval()
-        self.pause_refresh_alarms_data_interval()
-        self.pause_refresh_beekeeper_wallet_lock_status_interval()
+        self.pause_periodic_intervals()
 
         # There might be ongoing workers that should be cancelled (e.g. DynamicWidget update)
         self._cancel_workers_except_current()
@@ -446,9 +454,7 @@ class Clive(App[int]):
     async def _switch_mode_into_unlocked(self) -> None:
         await self.switch_mode_with_reset("dashboard")
         self.update_alarms_data_on_newest_node_data(suppress_cancelled_error=True)
-        self.resume_refresh_node_data_interval()
-        self.resume_refresh_alarms_data_interval()
-        self.resume_refresh_beekeeper_wallet_lock_status_interval()
+        self.resume_periodic_intervals()
 
     def _cancel_workers_except_current(self) -> None:
         try:
diff --git a/tests/tui/conftest.py b/tests/tui/conftest.py
index 0d60de09de..86ef1c9dd1 100644
--- a/tests/tui/conftest.py
+++ b/tests/tui/conftest.py
@@ -99,9 +99,7 @@ async def prepared_tui_on_dashboard(prepared_env: PreparedTuiEnv) -> PreparedTui
 
     # update the data and resume timers (pilot skips onboarding/unlocking via TUI - updating is handled there)
     await pilot.app.update_alarms_data_on_newest_node_data().wait()
-    pilot.app.resume_refresh_node_data_interval()
-    pilot.app.resume_refresh_alarms_data_interval()
-    pilot.app.resume_refresh_beekeeper_wallet_lock_status_interval()
+    pilot.app.resume_periodic_intervals()
 
     await pilot.app.push_screen(Dashboard())
     await wait_for_screen(pilot, Dashboard)
-- 
GitLab