[wallet] Store the block height and timestamp after syncing

Closes #455
This commit is contained in:
Alekos Filini 2021-10-23 15:25:49 +02:00
parent 12e51b3c06
commit 7c06f52a07
No known key found for this signature in database
GPG Key ID: 431401E4A4530061
2 changed files with 18 additions and 0 deletions

View File

@ -394,6 +394,9 @@ macro_rules! bdk_blockchain_tests {
#[test] #[test]
fn test_sync_simple() { fn test_sync_simple() {
use std::ops::Deref;
use crate::database::Database;
let (wallet, descriptors, mut test_client) = init_single_sig(); let (wallet, descriptors, mut test_client) = init_single_sig();
let tx = testutils! { let tx = testutils! {
@ -402,7 +405,13 @@ macro_rules! bdk_blockchain_tests {
println!("{:?}", tx); println!("{:?}", tx);
let txid = test_client.receive(tx); let txid = test_client.receive(tx);
// the RPC blockchain needs to call `sync()` during initialization to import the
// addresses (see `init_single_sig()`), so we skip this assertion
#[cfg(not(feature = "test-rpc"))]
assert!(wallet.database().deref().get_sync_time().unwrap().is_none(), "initial sync_time not none");
wallet.sync(noop_progress(), None).unwrap(); wallet.sync(noop_progress(), None).unwrap();
assert!(wallet.database().deref().get_sync_time().unwrap().is_some(), "sync_time hasn't been updated");
assert_eq!(wallet.get_balance().unwrap(), 50_000, "incorrect balance"); assert_eq!(wallet.get_balance().unwrap(), 50_000, "incorrect balance");
assert_eq!(wallet.list_unspent().unwrap()[0].keychain, KeychainKind::External, "incorrect keychain kind"); assert_eq!(wallet.list_unspent().unwrap()[0].keychain, KeychainKind::External, "incorrect keychain kind");

View File

@ -1554,6 +1554,15 @@ where
} }
} }
let last_sync_time = ConfirmationTime {
height: maybe_await!(self.client.get_height())?,
timestamp: time::get_timestamp(),
};
debug!("Saving `last_sync_time` = {:?}", last_sync_time);
self.database
.borrow_mut()
.set_last_sync_time(last_sync_time)?;
Ok(()) Ok(())
} }