mirror of
https://github.com/SeedSigner/seedsigner.git
synced 2026-10-05 23:18:25 +00:00
Add exit dialog when entering passphrase
Fixes / required changes: * Issue #510 'Behavior of back button confusing when entering password' * Updated test suite accordingly
This commit is contained in:
@@ -850,11 +850,11 @@ class SeedAddPassphraseScreen(BaseTopNavScreen):
|
||||
self.hw_button3.is_selected = True
|
||||
self.hw_button3.render()
|
||||
self.renderer.show_image()
|
||||
return self.passphrase
|
||||
return self.passphrase, None
|
||||
|
||||
elif input == HardwareButtonsConstants.KEY_PRESS and self.top_nav.is_selected:
|
||||
# Back button clicked
|
||||
return self.top_nav.selected_button
|
||||
return self.passphrase, self.top_nav.selected_button
|
||||
|
||||
# Check for keyboard swaps
|
||||
if input == HardwareButtonsConstants.KEY1:
|
||||
|
||||
@@ -323,19 +323,51 @@ class SeedAddPassphraseView(View):
|
||||
|
||||
|
||||
def run(self):
|
||||
ret = self.run_screen(seed_screens.SeedAddPassphraseScreen, passphrase=self.seed.passphrase)
|
||||
ret_passphrase, ret_btn = self.run_screen(seed_screens.SeedAddPassphraseScreen, passphrase=self.seed.passphrase)
|
||||
|
||||
if ret == RET_CODE__BACK_BUTTON:
|
||||
return Destination(BackStackView)
|
||||
|
||||
# The new passphrase will be the return value; it might be empty.
|
||||
self.seed.set_passphrase(ret)
|
||||
if len(self.seed.passphrase) > 0:
|
||||
self.seed.set_passphrase(ret_passphrase)
|
||||
if ret_btn == RET_CODE__BACK_BUTTON:
|
||||
if len(self.seed.passphrase) > 0:
|
||||
return Destination(SeedAddPassphraseExitDialogView)
|
||||
else:
|
||||
return Destination(BackStackView)
|
||||
elif len(self.seed.passphrase) > 0:
|
||||
return Destination(SeedReviewPassphraseView)
|
||||
else:
|
||||
return Destination(SeedFinalizeView)
|
||||
|
||||
|
||||
class SeedAddPassphraseExitDialogView(View):
|
||||
EXIT = ("Exit", None, None, "red")
|
||||
CONTINUE = "Continue editing"
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.seed = self.controller.storage.get_pending_seed()
|
||||
|
||||
|
||||
def run(self):
|
||||
passphrase = self.seed.passphrase
|
||||
|
||||
button_data = [self.EXIT, self.CONTINUE]
|
||||
|
||||
selected_menu_num = self.run_screen(
|
||||
WarningScreen,
|
||||
title="Exit",
|
||||
status_headline=None,
|
||||
text=f"Please confirm that you want to exit",
|
||||
show_back_button=False,
|
||||
button_data=button_data,
|
||||
)
|
||||
|
||||
if button_data[selected_menu_num] == self.EXIT:
|
||||
self.seed.set_passphrase("")
|
||||
return Destination(SeedFinalizeView)
|
||||
|
||||
elif button_data[selected_menu_num] == self.CONTINUE:
|
||||
return Destination(SeedAddPassphraseView)
|
||||
|
||||
|
||||
class SeedReviewPassphraseView(View):
|
||||
"""
|
||||
|
||||
@@ -134,6 +134,7 @@ def test_generate_screenshots(target_locale):
|
||||
seed_views.SeedMnemonicInvalidView,
|
||||
seed_views.SeedFinalizeView,
|
||||
seed_views.SeedAddPassphraseView,
|
||||
seed_views.SeedAddPassphraseExitDialogView,
|
||||
seed_views.SeedReviewPassphraseView,
|
||||
|
||||
(seed_views.SeedOptionsView, dict(seed_num=0)),
|
||||
|
||||
@@ -78,7 +78,7 @@ class TestPSBTFlows(FlowTest):
|
||||
FlowStep(psbt_views.PSBTSelectSeedView, button_data_selection=psbt_views.PSBTSelectSeedView.SCAN_SEED),
|
||||
FlowStep(scan_views.ScanSeedQRView, before_run=load_seed_into_decoder),
|
||||
FlowStep(seed_views.SeedFinalizeView, button_data_selection=seed_views.SeedFinalizeView.PASSPHRASE),
|
||||
FlowStep(seed_views.SeedAddPassphraseView, screen_return_value="abc"),
|
||||
FlowStep(seed_views.SeedAddPassphraseView, screen_return_value=("abc", None)),
|
||||
FlowStep(seed_views.SeedReviewPassphraseView, button_data_selection=seed_views.SeedReviewPassphraseView.DONE),
|
||||
FlowStep(seed_views.SeedOptionsView, is_redirect=True),
|
||||
FlowStep(psbt_views.PSBTOverviewView),
|
||||
|
||||
@@ -41,9 +41,14 @@ class TestSeedFlows(FlowTest):
|
||||
FlowStep(MainMenuView, button_data_selection=MainMenuView.SCAN),
|
||||
FlowStep(scan_views.ScanView, before_run=load_seed_into_decoder), # simulate read SeedQR; ret val is ignored
|
||||
FlowStep(seed_views.SeedFinalizeView, button_data_selection=seed_views.SeedFinalizeView.PASSPHRASE),
|
||||
FlowStep(seed_views.SeedAddPassphraseView, screen_return_value="muhpassphrase"),
|
||||
FlowStep(seed_views.SeedAddPassphraseView, screen_return_value=("muhpassphrase",RET_CODE__BACK_BUTTON)),
|
||||
FlowStep(seed_views.SeedAddPassphraseExitDialogView, button_data_selection=seed_views.SeedAddPassphraseExitDialogView.EXIT),
|
||||
FlowStep(seed_views.SeedFinalizeView, button_data_selection=seed_views.SeedFinalizeView.PASSPHRASE),
|
||||
FlowStep(seed_views.SeedAddPassphraseView, screen_return_value=("muhpassphrase",RET_CODE__BACK_BUTTON)),
|
||||
FlowStep(seed_views.SeedAddPassphraseExitDialogView, button_data_selection=seed_views.SeedAddPassphraseExitDialogView.CONTINUE),
|
||||
FlowStep(seed_views.SeedAddPassphraseView, screen_return_value=("muhpassphrase",None)),
|
||||
FlowStep(seed_views.SeedReviewPassphraseView, button_data_selection=seed_views.SeedReviewPassphraseView.EDIT),
|
||||
FlowStep(seed_views.SeedAddPassphraseView, screen_return_value="muhpassphrase2"),
|
||||
FlowStep(seed_views.SeedAddPassphraseView, screen_return_value=("muhpassphrase2",None)),
|
||||
FlowStep(seed_views.SeedReviewPassphraseView, button_data_selection=seed_views.SeedReviewPassphraseView.DONE),
|
||||
FlowStep(seed_views.SeedOptionsView),
|
||||
])
|
||||
|
||||
@@ -65,7 +65,7 @@ class TestToolsFlows(FlowTest):
|
||||
self.run_sequence(
|
||||
sequence=[
|
||||
FlowStep(seed_views.SeedFinalizeView, button_data_selection=seed_views.SeedFinalizeView.PASSPHRASE),
|
||||
FlowStep(seed_views.SeedAddPassphraseView, screen_return_value="mypassphrase"),
|
||||
FlowStep(seed_views.SeedAddPassphraseView, screen_return_value=("mypassphrase",None)),
|
||||
FlowStep(seed_views.SeedReviewPassphraseView, button_data_selection=seed_views.SeedReviewPassphraseView.DONE),
|
||||
FlowStep(seed_views.SeedOptionsView, is_redirect=True),
|
||||
FlowStep(seed_views.SeedExportXpubScriptTypeView),
|
||||
|
||||
Reference in New Issue
Block a user