Allow for lazy protocols with use_websocket

This commit is contained in:
Zak Stucke 2024-08-27 17:54:21 +03:00
parent 04bcb6b319
commit 00ced832b2

View file

@ -344,17 +344,19 @@ where
}
let web_socket = {
protocols.as_ref().map_or_else(
|| WebSocket::new(&url).unwrap_throw(),
|protocols| {
let array = protocols
.iter()
.map(|p| JsValue::from(p.clone()))
.collect::<Array>();
WebSocket::new_with_str_sequence(&url, &JsValue::from(&array))
.unwrap_throw()
},
)
protocols.with_untracked(|protocols| {
protocols.as_ref().map_or_else(
|| WebSocket::new(&url).unwrap_throw(),
|protocols| {
let array = protocols
.iter()
.map(|p| JsValue::from(p.clone()))
.collect::<Array>();
WebSocket::new_with_str_sequence(&url, &JsValue::from(&array))
.unwrap_throw()
},
)
})
};
web_socket.set_binary_type(BinaryType::Arraybuffer);
set_ready_state.set(ConnectionReadyState::Connecting);
@ -650,7 +652,8 @@ where
/// Defaults to `true`.
immediate: bool,
/// Sub protocols. See [MDN Docs](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/WebSocket#protocols).
protocols: Option<Vec<String>>,
#[builder(into)]
protocols: MaybeSignal<Option<Vec<String>>>,
}
impl<Rx: ?Sized, E, D> UseWebSocketOptions<Rx, E, D> {