Merge pull request #164 from zakstucke/main

This commit is contained in:
Marc-Stefan Cassola 2024-08-28 16:42:34 +01:00 committed by GitHub
commit 38b988d453
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 21 additions and 13 deletions

View file

@ -336,7 +336,7 @@ use_web_notification = [
"web-sys/NotificationDirection", "web-sys/NotificationDirection",
"web-sys/VisibilityState" "web-sys/VisibilityState"
] ]
use_websocket = ["dep:codee"] use_websocket = ["dep:web-sys", "dep:codee"]
use_window = ["use_document", "dep:web-sys", "web-sys/Navigator", "web-sys/MediaQueryList"] use_window = ["use_document", "dep:web-sys", "web-sys/Navigator", "web-sys/MediaQueryList"]
use_window_focus = ["use_event_listener"] use_window_focus = ["use_event_listener"]
use_window_scroll = ["use_event_listener", "use_window"] use_window_scroll = ["use_event_listener", "use_window"]

View file

@ -344,17 +344,19 @@ where
} }
let web_socket = { let web_socket = {
protocols.as_ref().map_or_else( protocols.with_untracked(|protocols| {
|| WebSocket::new(&url).unwrap_throw(), protocols.as_ref().map_or_else(
|protocols| { || WebSocket::new(&url).unwrap_throw(),
let array = protocols |protocols| {
.iter() let array = protocols
.map(|p| JsValue::from(p.clone())) .iter()
.collect::<Array>(); .map(|p| JsValue::from(p.clone()))
WebSocket::new_with_str_sequence(&url, &JsValue::from(&array)) .collect::<Array>();
.unwrap_throw() WebSocket::new_with_str_sequence(&url, &JsValue::from(&array))
}, .unwrap_throw()
) },
)
})
}; };
web_socket.set_binary_type(BinaryType::Arraybuffer); web_socket.set_binary_type(BinaryType::Arraybuffer);
set_ready_state.set(ConnectionReadyState::Connecting); set_ready_state.set(ConnectionReadyState::Connecting);
@ -650,7 +652,13 @@ where
/// Defaults to `true`. /// Defaults to `true`.
immediate: bool, immediate: bool,
/// Sub protocols. See [MDN Docs](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/WebSocket#protocols). /// Sub protocols. See [MDN Docs](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/WebSocket#protocols).
protocols: Option<Vec<String>>, ///
/// Can be set as a signal to support protocols only available after the initial render.
///
/// Note that protocols are only updated on the next websocket open() call, not whenever the signal is updated.
/// Therefore "lazy" protocols should use the `immediate(false)` option and manually call `open()`.
#[builder(into)]
protocols: MaybeSignal<Option<Vec<String>>>,
} }
impl<Rx: ?Sized, E, D> UseWebSocketOptions<Rx, E, D> { impl<Rx: ?Sized, E, D> UseWebSocketOptions<Rx, E, D> {