diff --git a/ports/stm32/boards/Passport/modules/actions.py b/ports/stm32/boards/Passport/modules/actions.py index 0b2569b..2557d3c 100644 --- a/ports/stm32/boards/Passport/modules/actions.py +++ b/ports/stm32/boards/Passport/modules/actions.py @@ -2027,3 +2027,9 @@ async def clear_ovc(*a): from history import OutptValueCache from common import flash_cache OutptValueCache.clear() + +async def set_last_verified_addr(*a): + from utils import save_next_addr + from public_constants import AF_P2WPKH + + save_next_addr(0, AF_P2WPKH, 76) diff --git a/ports/stm32/boards/Passport/modules/flow.py b/ports/stm32/boards/Passport/modules/flow.py index c848e48..6d56024 100644 --- a/ports/stm32/boards/Passport/modules/flow.py +++ b/ports/stm32/boards/Passport/modules/flow.py @@ -116,6 +116,7 @@ from noise_source import NoiseSource DeveloperMenu = [ # MenuItem('Settings Error 2', f=generate_settings_error2), # MenuItem('Settings Error', f=generate_settings_error), + MenuItem('Set Last Addr', f=set_last_verified_addr), MenuItem('Clear OVC', f=clear_ovc), MenuItem('Test UR1', f=test_ur1), MenuItem('Reset Device', f=reset_device), diff --git a/ports/stm32/boards/Passport/modules/settings.py b/ports/stm32/boards/Passport/modules/settings.py index 14ac512..675b5ba 100644 --- a/ports/stm32/boards/Passport/modules/settings.py +++ b/ports/stm32/boards/Passport/modules/settings.py @@ -221,9 +221,9 @@ class Settings: self.loop.call_later_ms(250, self.write_out()) def set(self, kn, v): - if self.curr_dict.get(kn, '!~$~!') != v: # So that None can be set + # print('Settings: Set {} to {}'.format(kn, to_str(v))) + if isinstance(v, dict) or self.curr_dict.get(kn, '!~$~!') != v: # So that None can be set self.curr_dict[kn] = v - # print('Settings: Set {} to {}'.format(kn, to_str(v))) self.changed() def remove(self, kn): diff --git a/ports/stm32/boards/Passport/modules/utils.py b/ports/stm32/boards/Passport/modules/utils.py index a747038..2bf37e7 100644 --- a/ports/stm32/boards/Passport/modules/utils.py +++ b/ports/stm32/boards/Passport/modules/utils.py @@ -596,7 +596,7 @@ def get_next_address_range(range, max_size): return ((high, high + max_size), max_size) async def scan_for_address(acct_num, address, addr_type, deriv_path, ms_wallet): - from common import system + from common import system, dis from ux import ux_show_story # print('Address to verify = {}'.format(address)) @@ -610,6 +610,7 @@ async def scan_for_address(acct_num, address, addr_type, deriv_path, ms_wallet): # Setup the initial ranges a = get_next_addr(acct_num, addr_type) + first_time = True low_range, low_size = get_prev_address_range((a, a), NUM_TO_CHECK // 2) high_range, high_size = get_next_address_range((a, a), NUM_TO_CHECK - low_size) @@ -617,6 +618,8 @@ async def scan_for_address(acct_num, address, addr_type, deriv_path, ms_wallet): # See if the address is valid system.show_busy_bar() + dis.fullscreen('Searching Addresses...') + addr_idx = -1 # Check downwards @@ -649,9 +652,21 @@ async def scan_for_address(acct_num, address, addr_type, deriv_path, ms_wallet): return addr_idx else: # Address was not found in that batch of 100, so offer to keep searching - result = await ux_show_story('''The scanned address was not yet found. + msg = 'Searched {} addresses:\n\n'.format(NUM_TO_CHECK) + + if first_time: + msg += '{}-{}\n'.format(low_range[0], high_range[1] - 1) + first_time = False + else: + if low_size > 0: + msg += '{}-{}\n'.format(low_range[0], low_range[1] - 1) + + # Add the upper range + msg += '{}-{}\n'.format(high_range[0], high_range[1] - 1) + + msg += '\nDo you want to keep searching?' -Do you want to continue searching addresses?''', title='Not Found', left_btn='BACK', right_btn='CONTINUE', + result = await ux_show_story(msg, title='Not Found', left_btn='NO', right_btn='YES', center=True, center_vertically=True) if result == 'x': return -1