use crate::{ReconnectLimit, UseEventSourceOnEventReturn};
use default_struct_builder::DefaultBuilder;
use std::marker::PhantomData;
use std::sync::Arc;
#[derive(DefaultBuilder)]
pub struct UseEventSourceOptions<T>
where
T: 'static,
{
pub(crate) reconnect_limit: ReconnectLimit,
pub(crate) reconnect_interval: u64,
pub(crate) on_failed: Arc<dyn Fn() + Send + Sync>,
pub(crate) immediate: bool,
#[builder(into)]
pub(crate) named_events: Vec<String>,
pub(crate) on_event: Arc<dyn Fn(&web_sys::Event) -> UseEventSourceOnEventReturn + Send + Sync>,
pub(crate) with_credentials: bool,
pub(crate) _marker: PhantomData<T>,
}
impl<T> Default for UseEventSourceOptions<T> {
fn default() -> Self {
Self {
reconnect_limit: ReconnectLimit::default(),
reconnect_interval: 3000,
on_failed: Arc::new(|| {}),
immediate: true,
named_events: vec![],
on_event: Arc::new(|_| UseEventSourceOnEventReturn::ProcessMessage),
with_credentials: false,
_marker: PhantomData,
}
}
}