From a64096038314b038eb36646b9effaa22ed4d9e47 Mon Sep 17 00:00:00 2001 From: YoursFunny Date: Mon, 6 Jul 2026 01:21:43 +0800 Subject: [PATCH] feat: add `Switch.wait()` --- module/ui/switch.py | 41 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 37 insertions(+), 4 deletions(-) diff --git a/module/ui/switch.py b/module/ui/switch.py index e5d8846..c946b72 100644 --- a/module/ui/switch.py +++ b/module/ui/switch.py @@ -136,14 +136,14 @@ class Switch: current = self.get(main=main) logger.attr(self.name, current) - # Handle additional popups - if self.handle_additional(main=main): - continue - # End if current == state: return changed + # Handle additional popups + if self.handle_additional(main=main): + continue + # Warning if current == 'unknown': if warning_show_timer.reached(): @@ -164,3 +164,36 @@ class Switch: changed = True return changed + + def wait(self, main, skip_first_screenshot=True): + """ + Wait until any state activated + + Args: + main (ModuleBase): + skip_first_screenshot: + + Returns: + bool: If success + """ + timeout = Timer(2, count=6).start() + while 1: + if skip_first_screenshot: + skip_first_screenshot = False + else: + main.device.screenshot() + + # Detect + current = self.get(main=main) + logger.attr(self.name, current) + + # End + if current != 'unknown': + return True + if timeout.reached(): + logger.warning(f'{self.name} wait activated timeout') + return False + + # Handle additional popups + if self.handle_additional(main=main): + continue