Skip to content
This repository was archived by the owner on Aug 21, 2025. It is now read-only.

Commit 6c2bd73

Browse files
committed
do not use window
1 parent 7b9ce26 commit 6c2bd73

File tree

2 files changed

+14
-11
lines changed

2 files changed

+14
-11
lines changed

Cargo.toml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,7 @@ wasm-bindgen-futures = { version = "0.4.50", optional = true }
3434
anyhow = { version = "1.0.98", default-features = false }
3535
serde = { version = "1.0.219", default-features = false, features = ["derive"] }
3636
serde-wasm-bindgen = "0.6.5"
37-
web-sys = { version = "0.3.77", default-features = false, features = [
38-
"Window",
39-
] }
37+
web-sys = { version = "0.3.77", default-features = false }
4038

4139
# Compatibility to compile to WASM
4240
getrandom = { version = "0.2.16", features = ["js"] }

src/bitcoin/esplora_client.rs

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ use bdk_wallet::{
88
};
99
use wasm_bindgen::{
1010
prelude::{wasm_bindgen, Closure},
11-
JsCast, JsValue,
11+
JsCast, JsError, JsValue,
1212
};
1313
use wasm_bindgen_futures::JsFuture;
14-
use web_sys::js_sys::{Function, Promise};
14+
use web_sys::js_sys::{global, Function, Promise, Reflect};
1515

1616
use crate::{
1717
result::JsResult,
@@ -94,14 +94,19 @@ impl Sleeper for WasmSleeper {
9494
type Sleep = WasmSleep;
9595

9696
fn sleep(dur: Duration) -> Self::Sleep {
97-
let ms = dur.as_millis() as i32;
97+
let ms = dur.as_millis();
9898
let promise = Promise::new(&mut |resolve, _reject| {
99-
let cb = Closure::once_into_js(move || resolve.call0(&JsValue::NULL).unwrap());
100-
web_sys::window()
101-
.unwrap()
102-
.set_timeout_with_callback_and_timeout_and_arguments_0(cb.unchecked_ref::<Function>(), ms)
103-
.unwrap();
99+
let cb = Closure::once_into_js(move || resolve.call0(&JsValue::NULL).unwrap()).unchecked_into::<Function>();
100+
101+
// globalThis.setTimeout(cb, ms);
102+
let g = global();
103+
let set_timeout = Reflect::get(&g, &JsValue::from_str("setTimeout"))
104+
.unwrap_or_else(|_| JsError::new("setTimeout not found").into())
105+
.unchecked_into::<Function>();
106+
107+
set_timeout.call2(&g, &cb, &JsValue::from_f64(ms as f64)).unwrap();
104108
});
109+
105110
WasmSleep(JsFuture::from(promise))
106111
}
107112
}

0 commit comments

Comments
 (0)