Improved handling for the PSBTOverview loading screen spinner

Fixes #188

* Only runs the spinner when the psbt actually needs to be reparsed (returning to the PSBT Overview screen via BACK button doesn't need to reparse the psbt so the spinner is no longer displayed).
This commit is contained in:
kdmukai
2022-05-26 08:09:03 -05:00
parent d5ac99d46b
commit 3afeeda11c
+18 -11
View File
@@ -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(