mirror of
https://github.com/SeedSigner/seedsigner.git
synced 2026-10-05 15:08:25 +00:00
Merge pull request #563 from alvroble/passphrase-exit-dialog
[Enhancement] Add exit dialog when entering passphrase
This commit is contained in:
@@ -844,17 +844,18 @@ class SeedAddPassphraseScreen(BaseTopNavScreen):
|
||||
keyboard_swap = False
|
||||
|
||||
# Check our two possible exit conditions
|
||||
# TODO: note the unusual return value, consider refactoring to a Response object in the future
|
||||
if input == HardwareButtonsConstants.KEY3:
|
||||
# Save!
|
||||
# First light up key3
|
||||
self.hw_button3.is_selected = True
|
||||
self.hw_button3.render()
|
||||
self.renderer.show_image()
|
||||
return self.passphrase
|
||||
return dict(passphrase=self.passphrase)
|
||||
|
||||
elif input == HardwareButtonsConstants.KEY_PRESS and self.top_nav.is_selected:
|
||||
# Back button clicked
|
||||
return self.top_nav.selected_button
|
||||
return dict(passphrase=self.passphrase, is_back_button=True)
|
||||
|
||||
# Check for keyboard swaps
|
||||
if input == HardwareButtonsConstants.KEY1:
|
||||
|
||||
@@ -355,20 +355,55 @@ class SeedAddPassphraseView(View):
|
||||
|
||||
def run(self):
|
||||
passphrase_title=self.seed.passphrase_label
|
||||
ret = self.run_screen(seed_screens.SeedAddPassphraseScreen, passphrase=self.seed.passphrase, title=passphrase_title)
|
||||
ret_dict = self.run_screen(seed_screens.SeedAddPassphraseScreen, passphrase=self.seed.passphrase, title=passphrase_title)
|
||||
|
||||
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_dict["passphrase"])
|
||||
|
||||
if "is_back_button" in ret_dict:
|
||||
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):
|
||||
EDIT = "Edit passphrase"
|
||||
DISCARD = ("Discard passphrase", None, None, "red")
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.seed = self.controller.storage.get_pending_seed()
|
||||
|
||||
|
||||
def run(self):
|
||||
button_data = [self.EDIT, self.DISCARD]
|
||||
|
||||
selected_menu_num = self.run_screen(
|
||||
WarningScreen,
|
||||
title="Discard passphrase?",
|
||||
status_headline=None,
|
||||
text=f"Your current passphrase entry will be erased",
|
||||
show_back_button=False,
|
||||
button_data=button_data,
|
||||
)
|
||||
|
||||
if button_data[selected_menu_num] == self.EDIT:
|
||||
return Destination(SeedAddPassphraseView)
|
||||
|
||||
elif button_data[selected_menu_num] == self.DISCARD:
|
||||
self.seed.set_passphrase("")
|
||||
return Destination(SeedFinalizeView)
|
||||
|
||||
|
||||
|
||||
class SeedReviewPassphraseView(View):
|
||||
"""
|
||||
Display the completed passphrase back to the user.
|
||||
|
||||
@@ -166,6 +166,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)),
|
||||
|
||||
@@ -82,7 +82,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=SettingsConstants.LABEL__BIP39_PASSPHRASE),
|
||||
FlowStep(seed_views.SeedAddPassphraseView, screen_return_value="abc"),
|
||||
FlowStep(seed_views.SeedAddPassphraseView, screen_return_value=dict(passphrase="abc")),
|
||||
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=SettingsConstants.LABEL__BIP39_PASSPHRASE),
|
||||
FlowStep(seed_views.SeedAddPassphraseView, screen_return_value="muhpassphrase"),
|
||||
FlowStep(seed_views.SeedAddPassphraseView, screen_return_value=dict(passphrase="muhpassphrase", is_back_button=True)),
|
||||
FlowStep(seed_views.SeedAddPassphraseExitDialogView, button_data_selection=seed_views.SeedAddPassphraseExitDialogView.DISCARD),
|
||||
FlowStep(seed_views.SeedFinalizeView, button_data_selection=SettingsConstants.LABEL__BIP39_PASSPHRASE),
|
||||
FlowStep(seed_views.SeedAddPassphraseView, screen_return_value=dict(passphrase="muhpassphrase", is_back_button=True)),
|
||||
FlowStep(seed_views.SeedAddPassphraseExitDialogView, button_data_selection=seed_views.SeedAddPassphraseExitDialogView.EDIT),
|
||||
FlowStep(seed_views.SeedAddPassphraseView, screen_return_value=dict(passphrase="muhpassphrase")),
|
||||
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=dict(passphrase="muhpassphrase")),
|
||||
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=SettingsConstants.LABEL__BIP39_PASSPHRASE),
|
||||
FlowStep(seed_views.SeedAddPassphraseView, screen_return_value="mypassphrase"),
|
||||
FlowStep(seed_views.SeedAddPassphraseView, screen_return_value=dict(passphrase="mypassphrase")),
|
||||
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