diff --git a/src/seedsigner/models/sparrow_wallet.py b/src/seedsigner/models/sparrow_wallet.py index 2765ad12..6e9c77a9 100644 --- a/src/seedsigner/models/sparrow_wallet.py +++ b/src/seedsigner/models/sparrow_wallet.py @@ -133,7 +133,9 @@ class SparrowWallet(Wallet): def total_frames_parse(data) -> int: if re.search("^UR\:CRYPTO-PSBT\/(\d+)\-(\d+)\/", data, re.IGNORECASE) != None: - return 10 #valid + return 10 # valid + elif re.search("^UR\:CRYPTO-PSBT", data, re.IGNORECASE) != None: + return 1 # valid but only 1 segment else: return -1 #invalid diff --git a/src/seedsigner/models/specter_desktop_wallet.py b/src/seedsigner/models/specter_desktop_wallet.py index 9610797b..dff29997 100644 --- a/src/seedsigner/models/specter_desktop_wallet.py +++ b/src/seedsigner/models/specter_desktop_wallet.py @@ -55,14 +55,18 @@ class SpecterDesktopWallet(Wallet): def total_frames_parse(data) -> int: if re.search("^p(\d+)of(\d+) ", data, re.IGNORECASE) != None: return int(re.search("^p(\d+)of(\d+) ", data, re.IGNORECASE).group(2)) + elif re.search("UR\:.*", data, re.IGNORECASE) != None: + return -1 # if data has UR:, assume invalid wallet selected else: - return -1 + return 1 def current_frame_parse(data) -> int: if re.search("^p(\d+)of(\d+) ", data, re.IGNORECASE) != None: return int(re.search("^p(\d+)of(\d+) ", data, re.IGNORECASE).group(1)) + elif re.search("UR\:.*", data, re.IGNORECASE) != None: + return -1 # if data has UR:, assume invalid wallet selected else: - return -1 + return 1 # assume a single frame for specter if no p#of# is found. def data_parse(data) -> str: return data.split(" ")[-1].strip() @@ -97,7 +101,12 @@ class SpecterDesktopWallet(Wallet): stop = self.qrsize qr_cnt = ((len(data)-1) // self.qrsize) + 1 - while cnt < qr_cnt: + if qr_cnt == 1: + part = data[start:stop] + images.append(qr.qrimage(part)) + print(part) + + while cnt < qr_cnt and qr_cnt != 1: part = "p" + str(cnt+1) + "of" + str(qr_cnt) + " " + data[start:stop] images.append(qr.qrimage(part)) print(part)