From 3cf5d7f11ae198edfcbecfe806565034ef956ee5 Mon Sep 17 00:00:00 2001 From: Thomas Farstrike Date: Tue, 3 Jun 2025 15:00:35 +0200 Subject: [PATCH] Improve error handling --- .../assets/captureqr.py | 1 + .../assets/displaywallet.py | 4 +++ internal_filesystem/lib/mpos/apps.py | 32 +++++++++++++------ 3 files changed, 27 insertions(+), 10 deletions(-) diff --git a/internal_filesystem/apps/com.lightningpiggy.displaywallet/assets/captureqr.py b/internal_filesystem/apps/com.lightningpiggy.displaywallet/assets/captureqr.py index b06bd138..061b445e 100644 --- a/internal_filesystem/apps/com.lightningpiggy.displaywallet/assets/captureqr.py +++ b/internal_filesystem/apps/com.lightningpiggy.displaywallet/assets/captureqr.py @@ -143,6 +143,7 @@ class Camera(Activity): if not result: self.status_label.set_text(status_label_text_searching) else: + self.stop_qr_decoding() result = remove_bom(result) result = print_qr_buffer(result) diff --git a/internal_filesystem/apps/com.lightningpiggy.displaywallet/assets/displaywallet.py b/internal_filesystem/apps/com.lightningpiggy.displaywallet/assets/displaywallet.py index d8c6cd4f..f0e3d049 100644 --- a/internal_filesystem/apps/com.lightningpiggy.displaywallet/assets/displaywallet.py +++ b/internal_filesystem/apps/com.lightningpiggy.displaywallet/assets/displaywallet.py @@ -7,6 +7,7 @@ from captureqr import Camera class MainActivity(Activity): def __init__(self): + super().__init__() self.wallet = None self.receive_qr_data = None self.destination = None @@ -114,6 +115,7 @@ class MainActivity(Activity): # Used to list and edit all settings: class SettingsActivity(Activity): def __init__(self): + super().__init__() self.prefs = mpos.config.SharedPreferences("com.lightningpiggy.displaywallet") self.settings = [ {"title": "Wallet Type", "key": "wallet_type", "value_label": None, "cont": None}, @@ -344,6 +346,8 @@ class SettingActivity(Activity): self.finish() class FullscreenQR(Activity): + # No __init__() so super.__init__() will be called automatically + def onCreate(self): receive_qr_data = self.getIntent().extras.get("receive_qr_data") qr_screen = lv.obj() diff --git a/internal_filesystem/lib/mpos/apps.py b/internal_filesystem/lib/mpos/apps.py index 79b0d89d..d2d1ee4b 100644 --- a/internal_filesystem/lib/mpos/apps.py +++ b/internal_filesystem/lib/mpos/apps.py @@ -228,9 +228,6 @@ class Activity: self.result = None self._result_callback = None - def getIntent(self): - return self.intent - def onCreate(self): pass def onStart(self, screen): @@ -247,18 +244,33 @@ class Activity: def setContentView(self, screen): mpos.ui.setContentView(self, screen) + def startActivity(self, intent): + ActivityNavigator.startActivity(intent) + + def initError(self, e): + print(f"WARNING: You might have inherited from Activity with a custom __init__() without calling super().__init__(). Got AttributeError: {e}") + + def getIntent(self): + try: + return self.intent + except AttributeError as e: + self.initError(e) + def setResult(self, result_code, data=None): """Set the result to be returned when the activity finishes.""" - self.result = {"result_code": result_code, "data": data or {}} + try: + self.result = {"result_code": result_code, "data": data or {}} + except AttributeError as e: + self.initError(e) def finish(self): mpos.ui.back_screen() - if self._result_callback and self.result: - self._result_callback(self.result) - self._result_callback = None # Clean up - - def startActivity(self, intent): - ActivityNavigator.startActivity(intent) + try: + if self._result_callback and self.result: + self._result_callback(self.result) + self._result_callback = None # Clean up + except AttributeError as e: + self.initError(e) class Intent: def __init__(self, activity_class=None, action=None, data=None, extras=None):