Adding a few extra error handling steps in animated psbt scanning

This commit is contained in:
newtonick
2021-07-09 15:53:39 -04:00
parent 0fa3255aa8
commit 0ba3b5f6de
4 changed files with 28 additions and 13 deletions
+10 -2
View File
@@ -480,11 +480,19 @@ class Controller:
if raw_pbst == "nodata":
return Path.MAIN_MENU
if raw_pbst == "invalid":
self.menu_view.draw_modal(["QR Format Unexpected", "Check Wallet in Settings"], "", "RIGHT to EXIT")
self.menu_view.draw_modal(["QR Format Unexpected", "Check Wallet in Settings"], "", "Right to Exit")
input = self.buttons.wait_for([B.KEY_RIGHT])
return Path.MAIN_MENU
if raw_pbst == "invalidpsbt":
self.menu_view.draw_modal(["PSBT UR 2.0 Decoding Error", "try again"], "", "Right to Exit")
input = self.buttons.wait_for([B.KEY_RIGHT])
return Path.MAIN_MENU
self.menu_view.draw_modal(["Parsing PSBT ..."])
self.wallet.parse_psbt(raw_pbst)
parse_status = self.wallet.parse_psbt(raw_pbst)
if parse_status == False:
self.menu_view.draw_modal(["PSBT Parsing Failed"], "", "Right to Exit")
input = self.buttons.wait_for([B.KEY_RIGHT])
return Path.MAIN_MENU
# show transaction information before sign
self.signing_tools_view.display_transaction_information(self.wallet)
+1 -1
View File
@@ -124,7 +124,7 @@ class BlueWallet(Wallet):
def set_qr_density(self, density):
self.cur_qr_density = density
if density == Wallet.QRLOW:
self.qrsize = 70
self.qrsize = 20
elif density == Wallet.QRMEDIUM:
self.qrsize = 100
elif density == Wallet.QRHIGH:
+11 -5
View File
@@ -34,10 +34,12 @@ class SparrowWallet(Wallet):
return "Sparrow"
def parse_psbt(self, raw_psbt) -> bool:
base64_psbt = a2b_base64(raw_psbt)
self.tx = psbt.PSBT.parse(base64_psbt)
self._parse_psbt()
try:
base64_psbt = a2b_base64(raw_psbt)
self.tx = psbt.PSBT.parse(base64_psbt)
self._parse_psbt()
except Exception:
return False
return True
@@ -103,7 +105,11 @@ class SparrowWallet(Wallet):
self.qr_data = ["empty"]
# get data and percentage
self.ur_decoder.receive_part(data[0])
decoder_work_check = self.ur_decoder.receive_part(data[0])
if decoder_work_check == False:
self.qr_data = ["invalidpsbt"]
self.buttons.trigger_override() # something went wrong, invalid QR
return
self.percentage_complete = self.ur_decoder.estimated_percent_complete()
# checking if all frames has been captured, exit camera processing
@@ -21,11 +21,12 @@ class SpecterDesktopWallet(Wallet):
return "Specter Desktop"
def parse_psbt(self, raw_psbt) -> bool:
base64_psbt = a2b_base64(raw_psbt)
self.tx = psbt.PSBT.parse(base64_psbt)
self._parse_psbt()
try:
base64_psbt = a2b_base64(raw_psbt)
self.tx = psbt.PSBT.parse(base64_psbt)
self._parse_psbt()
except Exception:
return False
return True