diff --git a/CHANGELOG.md b/CHANGELOG.md index e0ec03d1..0f4179c1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ page. See [DEVELOPMENT_CYCLE.md](DEVELOPMENT_CYCLE.md) for more details. - Fixed `warn!` messages, including the mainnet notice, being hidden unless `RUST_LOG` was set; warnings are now shown by default - Added `hwi` feature with a hardware wallet `hwi` command to list connected devices, register a wallet policy, display a receive address, and sign PSBTs. Supports Ledger, Coldcard, BitBox02, Jade and Specter. - Replaced plain `wallets` with `wallets list`, and added `wallets delete ` for unused saved wallet configurations. +- Changed unused address output to a list ## [4.0.0] diff --git a/src/handlers/offline.rs b/src/handlers/offline.rs index 15cdd26b..63951cd6 100644 --- a/src/handlers/offline.rs +++ b/src/handlers/offline.rs @@ -111,12 +111,15 @@ impl AppCommand>> for NewAddressCommand { pub struct UnusedAddressCommand; impl AppCommand>> for UnusedAddressCommand { - type Output = AddressResult; + type Output = ListResult; fn execute(&self, ctx: &mut AppContext>) -> Result { let wallet = &mut ctx.state.wallet; - let address_info = wallet.next_unused_address(KeychainKind::External); - Ok(AddressResult::from(address_info)) + let address_info = wallet + .list_unused_addresses(KeychainKind::External) + .map(AddressResult::from) + .collect(); + Ok(ListResult::new(address_info)) } } diff --git a/tests/integration/offline.rs b/tests/integration/offline.rs index 417bf72b..e00ba941 100644 --- a/tests/integration/offline.rs +++ b/tests/integration/offline.rs @@ -50,13 +50,20 @@ mod test_offline { let (cli, mut cmd_init) = setup_wallet_config(); cmd_init.assert().success(); + // `unused-address` before revealing an address + cli.wallet_cmd(&["--wallet", WALLET_NAME, "unused_address"]) + .assert() + .success() + .stdout(predicate::str::contains("\"count\"")) + .stdout(predicate::str::contains("\"items\": []")); + // new address cli.wallet_cmd(&["--wallet", WALLET_NAME, "new_address"]) .assert() .success() .stdout(predicate::str::contains("\"address\":")); - // `unused-address` + // `unused-address` now returns the revealed, unused address cli.wallet_cmd(&["--wallet", WALLET_NAME, "unused_address"]) .assert() .success()