diff --git a/src/seedsigner/views/psbt_views.py b/src/seedsigner/views/psbt_views.py index 5e2149cc..1895a273 100644 --- a/src/seedsigner/views/psbt_views.py +++ b/src/seedsigner/views/psbt_views.py @@ -84,18 +84,22 @@ class PSBTOverviewView(View): def __init__(self): super().__init__() - # The PSBTParser takes a while to read the PSBT. Run the loading screen while we - # wait. - self.loading_screen = LoadingScreenThread(text="Parsing PSBT...") - self.loading_screen.start() + self.loading_screen = None if not self.controller.psbt_parser or self.controller.psbt_parser.seed != self.controller.psbt_seed: - # Must run the PSBTParser or re-parse - self.controller.psbt_parser = PSBTParser( - self.controller.psbt, - seed=self.controller.psbt_seed, - network=self.settings.get_value(SettingsConstants.SETTING__NETWORK) - ) + # The PSBTParser takes a while to read the PSBT. Run the loading screen while + # we wait. + self.loading_screen = LoadingScreenThread(text="Parsing PSBT...") + self.loading_screen.start() + try: + self.controller.psbt_parser = PSBTParser( + self.controller.psbt, + seed=self.controller.psbt_seed, + network=self.settings.get_value(SettingsConstants.SETTING__NETWORK) + ) + except Exception as e: + self.loading_screen.stop() + raise e def run(self): @@ -132,7 +136,8 @@ class PSBTOverviewView(View): ) # Everything is set. Stop the loading screen - self.loading_screen.stop() + if self.loading_screen: + self.loading_screen.stop() # Run the overview screen selected_menu_num = screen.display() @@ -151,6 +156,8 @@ class PSBTOverviewView(View): else: return Destination(PSBTMathView) + + class PSBTUnsupportedScriptTypeWarningView(View): def run(self): selected_menu_num = WarningScreen(