Skip to content

Commit ed0987f

Browse files
committed
spawn task in sync2 instead and remove spawn from simple-sync-and-send test
1 parent f9c0203 commit ed0987f

File tree

2 files changed

+41
-37
lines changed

2 files changed

+41
-37
lines changed

src/bindgen/wallet.rs

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@ use wasm_bindgen::prelude::*;
55

66
use tonic_web_wasm_client::Client;
77

8+
use crate::error::Error;
9+
use crate::{BlockRange, MemoryWallet, Wallet, PRUNING_DEPTH};
10+
use wasm_thread as thread;
811
use zcash_address::ZcashAddress;
912
use zcash_client_backend::proto::service::compact_tx_streamer_client::CompactTxStreamerClient;
1013
use zcash_client_memory::MemoryWalletDb;
1114
use zcash_keys::keys::UnifiedFullViewingKey;
1215
use zcash_primitives::consensus::{self, BlockHeight};
1316

14-
use crate::error::Error;
15-
use crate::{BlockRange, MemoryWallet, Wallet, PRUNING_DEPTH};
16-
1717
/// # A Zcash wallet
1818
///
1919
/// A wallet is a set of accounts that can be synchronized together with the blockchain.
@@ -133,7 +133,17 @@ impl WebWallet {
133133

134134
/// Synchronize the wallet with the blockchain up to the tip using zcash_client_backend's algo
135135
pub async fn sync2(&self) -> Result<(), Error> {
136-
self.inner.sync2().await
136+
let db = self.inner.clone();
137+
let main_handler = thread::Builder::new()
138+
.spawn_async(|| async {
139+
assert!(thread::is_web_worker_thread());
140+
let db = db;
141+
db.sync2().await.unwrap();
142+
})
143+
.unwrap()
144+
.join_async();
145+
main_handler.await.unwrap();
146+
Ok(())
137147
}
138148

139149
pub async fn get_wallet_summary(&self) -> Result<Option<WalletSummary>, Error> {

tests/simple-sync-and-send.rs

Lines changed: 27 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -31,37 +31,31 @@ async fn test_get_and_scan_range() {
3131
let id = w.create_account(SEED, HD_INDEX, BIRTHDAY).await.unwrap();
3232
tracing::info!("Created account with id: {}", id);
3333
let w_clone = w.clone();
34-
let main_handler = thread::Builder::new().spawn_async(move || async {
35-
let w = w_clone;
36-
assert!(thread::is_web_worker_thread());
37-
38-
39-
#[cfg(not(feature = "sync2"))]
40-
{
41-
w.sync(&js_sys::Function::new_with_args(
42-
"scanned_to, tip",
43-
"console.log('Scanned: ', scanned_to, '/', tip)",
44-
))
45-
.await
46-
.unwrap();
47-
}
48-
#[cfg(feature = "sync2")]
49-
{
50-
tracing::info!("Syncing wallet with sync2");
51-
w.sync2().await.unwrap();
52-
}
53-
tracing::info!("Syncing complete :)");
54-
55-
let summary = w.get_wallet_summary().await.unwrap();
56-
tracing::info!("Wallet summary: {:?}", summary);
57-
58-
tracing::info!("Proposing a transaction");
59-
w.transfer(SEED, 0, "utest1z00xn09t4eyeqw9zmjss75sf460423dymgyfjn8rtlj26cffy0yad3eea82xekk24s00wnm38cvyrm2c6x7fxlc0ns4a5j7utgl6lchvglfvl9g9p56fqwzvzvj9d3z6r6ft88j654d7dj0ep6myq5duz9s8x78fdzmtx04d2qn8ydkxr4lfdhlkx9ktrw98gd97dateegrr68vl8xu".to_string(), 1000).await.unwrap();
60-
tracing::info!("Transaction proposed");
61-
62-
let summary = w.get_wallet_summary().await.unwrap();
63-
tracing::info!("Wallet summary: {:?}", summary);
64-
}).unwrap().join_async();
65-
66-
main_handler.await.unwrap_throw();
34+
let w = w_clone;
35+
36+
#[cfg(not(feature = "sync2"))]
37+
{
38+
w.sync(&js_sys::Function::new_with_args(
39+
"scanned_to, tip",
40+
"console.log('Scanned: ', scanned_to, '/', tip)",
41+
))
42+
.await
43+
.unwrap();
44+
}
45+
#[cfg(feature = "sync2")]
46+
{
47+
tracing::info!("Syncing wallet with sync2");
48+
w.sync2().await.unwrap();
49+
}
50+
tracing::info!("Syncing complete :)");
51+
52+
let summary = w.get_wallet_summary().await.unwrap();
53+
tracing::info!("Wallet summary: {:?}", summary);
54+
55+
tracing::info!("Proposing a transaction");
56+
w.transfer(SEED, 0, "utest1z00xn09t4eyeqw9zmjss75sf460423dymgyfjn8rtlj26cffy0yad3eea82xekk24s00wnm38cvyrm2c6x7fxlc0ns4a5j7utgl6lchvglfvl9g9p56fqwzvzvj9d3z6r6ft88j654d7dj0ep6myq5duz9s8x78fdzmtx04d2qn8ydkxr4lfdhlkx9ktrw98gd97dateegrr68vl8xu".to_string(), 1000).await.unwrap();
57+
tracing::info!("Transaction proposed");
58+
59+
let summary = w.get_wallet_summary().await.unwrap();
60+
tracing::info!("Wallet summary: {:?}", summary);
6761
}

0 commit comments

Comments
 (0)