Fix not "disconnecting" on refresh (hopefully)
This commit is contained in:
parent
ee8187cabb
commit
70eb1ca121
1 changed files with 19 additions and 12 deletions
|
@ -1223,25 +1223,32 @@ impl Component for Wrapper {
|
||||||
Promise::new(&mut |resolve: js_sys::Function, _reject| {
|
Promise::new(&mut |resolve: js_sys::Function, _reject| {
|
||||||
let window =
|
let window =
|
||||||
web_sys::window().expect("Should be able to get window");
|
web_sys::window().expect("Should be able to get window");
|
||||||
window
|
let outer_function = Function::new_with_args(
|
||||||
.add_event_listener_with_callback("pagehide", &resolve)
|
"resolve",
|
||||||
.expect("Should be able to set \"pagehide\" callback");
|
&format!(
|
||||||
window
|
|
||||||
.add_event_listener_with_callback("beforeunload", &resolve)
|
|
||||||
.expect("Should be able to set \"beforeunload\" callback");
|
|
||||||
});
|
|
||||||
let js_fut = JsFuture::from(promise);
|
|
||||||
js_fut.await.ok();
|
|
||||||
|
|
||||||
let function = Function::new_no_args(&format!(
|
|
||||||
"
|
"
|
||||||
let xhr = new XMLHttpRequest();
|
let xhr = new XMLHttpRequest();
|
||||||
xhr.open('POST', '{}');
|
xhr.open('POST', '{}');
|
||||||
xhr.send('{{\"type\": \"disconnect\", \"id\": {}}}');
|
xhr.send('{{\"type\": \"disconnect\", \"id\": {}}}');
|
||||||
|
resolve();
|
||||||
",
|
",
|
||||||
BACKEND_URL, player_id
|
BACKEND_URL, player_id
|
||||||
));
|
),
|
||||||
function.call0(&function).ok();
|
);
|
||||||
|
let binded_func =
|
||||||
|
outer_function.bind1(&outer_function, &resolve);
|
||||||
|
window
|
||||||
|
.add_event_listener_with_callback("pagehide", &binded_func)
|
||||||
|
.expect("Should be able to set \"pagehide\" callback");
|
||||||
|
window
|
||||||
|
.add_event_listener_with_callback(
|
||||||
|
"beforeunload",
|
||||||
|
&binded_func,
|
||||||
|
)
|
||||||
|
.expect("Should be able to set \"beforeunload\" callback");
|
||||||
|
});
|
||||||
|
let js_fut = JsFuture::from(promise);
|
||||||
|
js_fut.await.ok();
|
||||||
|
|
||||||
WrapperMsg::Reset
|
WrapperMsg::Reset
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue