Skip to content

Commit 3153156

Browse files
committed
Merge branch 'ui-ada'
2 parents 3e7be64 + 5b75afd commit 3153156

File tree

13 files changed

+589
-621
lines changed

13 files changed

+589
-621
lines changed

src/rust/bitbox02-rust/src/hww.rs

Lines changed: 177 additions & 100 deletions
Large diffs are not rendered by default.

src/rust/bitbox02-rust/src/hww/api.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ async fn process_api<W: Workflows>(
172172
Request::SetMnemonicPassphraseEnabled(ref request) => {
173173
set_mnemonic_passphrase_enabled::process(workflows, request).await
174174
}
175-
Request::InsertRemoveSdcard(ref request) => sdcard::process(request).await,
175+
Request::InsertRemoveSdcard(ref request) => sdcard::process(workflows, request).await,
176176
Request::ListBackups(_) => backup::list(),
177177
Request::CheckSdcard(_) => Ok(Response::CheckSdcard(pb::CheckSdCardResponse {
178178
inserted: bitbox02::sd::sdcard_inserted(),

src/rust/bitbox02-rust/src/hww/api/backup.rs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,12 @@ pub async fn create<W: Workflows>(
8989
.await?;
9090

9191
// Wait for sd card
92-
super::sdcard::process(&pb::InsertRemoveSdCardRequest {
93-
action: pb::insert_remove_sd_card_request::SdCardAction::InsertCard as _,
94-
})
92+
super::sdcard::process(
93+
workflows,
94+
&pb::InsertRemoveSdCardRequest {
95+
action: pb::insert_remove_sd_card_request::SdCardAction::InsertCard as _,
96+
},
97+
)
9598
.await?;
9699

97100
let is_initialized = bitbox02::memory::is_initialized();
@@ -173,7 +176,6 @@ mod tests {
173176
// All good.
174177
mock(Data {
175178
sdcard_inserted: Some(true),
176-
..Default::default()
177179
});
178180
mock_sd();
179181
mock_memory();
@@ -225,7 +227,6 @@ mod tests {
225227
"577782fdfffbe314b23acaeefc39ad5e8641fba7e7dbe418a35956a879a67dd2";
226228
mock(Data {
227229
sdcard_inserted: Some(true),
228-
..Default::default()
229230
});
230231
mock_sd();
231232
mock_memory();
@@ -297,7 +298,6 @@ mod tests {
297298
// Create one backup.
298299
mock(Data {
299300
sdcard_inserted: Some(true),
300-
..Default::default()
301301
});
302302
mock_memory();
303303
mock_unlocked_using_mnemonic("purity concert above invest pigeon category peace tuition hazard vivid latin since legal speak nation session onion library travel spell region blast estate stay", "");
@@ -326,7 +326,6 @@ mod tests {
326326
// Create another backup.
327327
mock(Data {
328328
sdcard_inserted: Some(true),
329-
..Default::default()
330329
});
331330
mock_memory();
332331
mock_unlocked_using_mnemonic("goddess item rack improve shaft occur actress rib emerge salad rich blame model glare lounge stable electric height scrub scrub oyster now dinner oven", "");

src/rust/bitbox02-rust/src/hww/api/bip85.rs

Lines changed: 32 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ pub async fn process<W: Workflows>(
4646
/// Derives and displays a BIP-39 seed according to BIP-85:
4747
/// https://github.com/bitcoin/bips/blob/master/bip-0085.mediawiki#bip39.
4848
async fn process_bip39<W: Workflows>(workflows: &mut W) -> Result<(), Error> {
49-
use crate::workflow::trinary_choice::{choose, TrinaryChoice};
50-
use crate::workflow::{menu, mnemonic, trinary_input_string};
49+
use crate::workflow::trinary_choice::TrinaryChoice;
50+
use crate::workflow::{mnemonic, trinary_input_string};
5151

5252
workflows
5353
.confirm(&confirm::Params {
@@ -68,7 +68,10 @@ async fn process_bip39<W: Workflows>(workflows: &mut W) -> Result<(), Error> {
6868
})
6969
.await?;
7070

71-
let num_words: u32 = match choose("How many words?", "12", "18", "24").await {
71+
let num_words: u32 = match workflows
72+
.trinary_choice("How many words?", "12", "18", "24")
73+
.await
74+
{
7275
TrinaryChoice::TRINARY_CHOICE_LEFT => 12,
7376
TrinaryChoice::TRINARY_CHOICE_MIDDLE => 18,
7477
TrinaryChoice::TRINARY_CHOICE_RIGHT => 24,
@@ -79,32 +82,34 @@ async fn process_bip39<W: Workflows>(workflows: &mut W) -> Result<(), Error> {
7982
.await;
8083

8184
// Pick index. The first few are quick-access. "More" leads to a full number input keyboard.
82-
let index: u32 =
83-
match menu::pick(&["0", "1", "2", "3", "4", "More"], Some("Select index")).await? {
84-
i @ 0..=4 => i.into(),
85-
5 => {
86-
let number_string = workflows
87-
.enter_string(
88-
&trinary_input_string::Params {
89-
title: "Enter index",
90-
number_input: true,
91-
longtouch: true,
92-
..Default::default()
93-
},
94-
trinary_input_string::CanCancel::Yes,
95-
"",
96-
)
97-
.await?;
98-
match number_string.as_str().parse::<u32>() {
99-
Ok(i) if i < util::bip32::HARDENED => i,
100-
_ => {
101-
workflows.status("Invalid index", false).await;
102-
return Err(Error::InvalidInput);
103-
}
85+
let index: u32 = match workflows
86+
.menu(&["0", "1", "2", "3", "4", "More"], Some("Select index"))
87+
.await?
88+
{
89+
i @ 0..=4 => i.into(),
90+
5 => {
91+
let number_string = workflows
92+
.enter_string(
93+
&trinary_input_string::Params {
94+
title: "Enter index",
95+
number_input: true,
96+
longtouch: true,
97+
..Default::default()
98+
},
99+
trinary_input_string::CanCancel::Yes,
100+
"",
101+
)
102+
.await?;
103+
match number_string.as_str().parse::<u32>() {
104+
Ok(i) if i < util::bip32::HARDENED => i,
105+
_ => {
106+
workflows.status("Invalid index", false).await;
107+
return Err(Error::InvalidInput);
104108
}
105109
}
106-
6.. => panic!("bip85 error"),
107-
};
110+
}
111+
6.. => panic!("bip85 error"),
112+
};
108113

109114
workflows.status(&format!("Index: {}", index), true).await;
110115

src/rust/bitbox02-rust/src/hww/api/cardano/address.rs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -400,7 +400,7 @@ pub async fn process<W: Workflows>(
400400
mod tests {
401401
use super::*;
402402
use crate::bb02_async::block_on;
403-
use crate::workflow::RealWorkflows;
403+
use crate::workflow::testing::{Screen, TestingWorkflows};
404404
use alloc::boxed::Box;
405405
use bitbox02::testing::{mock, mock_unlocked, Data};
406406
use util::bip32::HARDENED;
@@ -476,7 +476,7 @@ mod tests {
476476

477477
fn do_pkh_skh(keypath_payment: &[u32], keypath_stake: &[u32]) -> Result<Response, Error> {
478478
block_on(process(
479-
&mut RealWorkflows,
479+
&mut TestingWorkflows::new(),
480480
&pb::CardanoAddressRequest {
481481
network: CardanoNetwork::CardanoMainnet as _,
482482
display: false,
@@ -565,19 +565,11 @@ mod tests {
565565
fn test_process_confirm() {
566566
const EXPECTED: &str = "addr1q90tlskd4mh5kncmul7vx887j30tjtfgvap5n0g0rf9qqc7znmndrdhe7rwvqkw5c7mqnp4a3yflnvu6kff7l5dungvqmvu6hs";
567567

568-
mock(Data {
569-
ui_confirm_create: Some(Box::new(|params| {
570-
assert_eq!(params.title, "Cardano");
571-
assert_eq!(params.body, EXPECTED);
572-
true
573-
})),
574-
..Default::default()
575-
});
576568
mock_unlocked();
577-
569+
let mut mock_workflows = TestingWorkflows::new();
578570
assert_eq!(
579571
block_on(process(
580-
&mut RealWorkflows,
572+
&mut mock_workflows,
581573
&pb::CardanoAddressRequest {
582574
network: CardanoNetwork::CardanoMainnet as _,
583575
display: true,
@@ -591,6 +583,14 @@ mod tests {
591583
r#pub: EXPECTED.into()
592584
}))
593585
);
586+
assert_eq!(
587+
mock_workflows.screens,
588+
vec![Screen::Confirm {
589+
title: "Cardano".into(),
590+
body: EXPECTED.into(),
591+
longtouch: false,
592+
},]
593+
);
594594
}
595595

596596
#[test]

0 commit comments

Comments
 (0)