diff --git a/lib/src/lightclient.rs b/lib/src/lightclient.rs index 622c019..6d440bc 100644 --- a/lib/src/lightclient.rs +++ b/lib/src/lightclient.rs @@ -817,6 +817,8 @@ impl LightClient { let mut unspent_notes: Vec = vec![]; let mut spent_notes : Vec = vec![]; let mut pending_notes: Vec = vec![]; + + let anchor_height: i32 = self.wallet.read().unwrap().get_anchor_height() as i32; { // Collect Sapling notes @@ -834,6 +836,7 @@ impl LightClient { "value" => nd.note.value, "is_change" => nd.is_change, "address" => LightWallet::note_address(self.config.hrp_sapling_address(), nd), + "spendable" => wtx.block <= anchor_height && nd.spent.is_none() && nd.unconfirmed_spent.is_none(), "spent" => nd.spent.map(|spent_txid| format!("{}", spent_txid)), "spent_at_height" => nd.spent_at_height.map(|h| format!("{}", h)), "unconfirmed_spent" => nd.unconfirmed_spent.map(|spent_txid| format!("{}", spent_txid)), diff --git a/lib/src/lightwallet.rs b/lib/src/lightwallet.rs index 15e3f11..3a8e4b1 100644 --- a/lib/src/lightwallet.rs +++ b/lib/src/lightwallet.rs @@ -733,6 +733,14 @@ impl LightWallet { } } + /// Get the height of the anchor block + pub fn get_anchor_height(&self) -> u32 { + match self.get_target_height_and_anchor_offset() { + Some((height, anchor_offset)) => height - anchor_offset as u32 - 1, + None => return 0, + } + } + pub fn memo_str(memo: &Option) -> Option { match memo { Some(memo) => { @@ -1003,10 +1011,7 @@ impl LightWallet { } pub fn spendable_zbalance(&self, addr: Option) -> u64 { - let anchor_height = match self.get_target_height_and_anchor_offset() { - Some((height, anchor_offset)) => height - anchor_offset as u32 - 1, - None => return 0, - }; + let anchor_height = self.get_anchor_height(); self.txs .read()