openrtc 1.0.12

OpenRTC: a Rust-first P2P runtime for device discovery, signaling, and iroh/QUIC networking.
Documentation
pub mod room;

#[cfg(target_arch = "wasm32")]
pub(crate) fn now_millis_u64() -> u64 {
    js_sys::Date::now() as u64
}

#[cfg(target_arch = "wasm32")]
pub(crate) fn now_timestamp_rfc3339() -> String {
    js_sys::Date::new_0()
        .to_iso_string()
        .as_string()
        .unwrap_or_else(|| "1970-01-01T00:00:00.000Z".to_string())
}

#[cfg(target_arch = "wasm32")]
pub(crate) fn timestamp_rfc3339_from_millis(millis: i64) -> String {
    js_sys::Date::new(&wasm_bindgen::JsValue::from_f64(millis as f64))
        .to_iso_string()
        .as_string()
        .unwrap_or_else(|| "1970-01-01T00:00:00.000Z".to_string())
}

#[cfg(not(target_arch = "wasm32"))]
pub(crate) fn now_millis_u64() -> u64 {
    std::time::SystemTime::now()
        .duration_since(std::time::UNIX_EPOCH)
        .unwrap_or_default()
        .as_millis() as u64
}

#[cfg(not(target_arch = "wasm32"))]
pub(crate) fn now_timestamp_rfc3339() -> String {
    let now = std::time::SystemTime::now();
    let dt: chrono::DateTime<chrono::Utc> = now.into();
    dt.to_rfc3339_opts(chrono::SecondsFormat::Millis, true)
}

#[cfg(not(target_arch = "wasm32"))]
pub(crate) fn timestamp_rfc3339_from_millis(millis: i64) -> String {
    chrono::DateTime::<chrono::Utc>::from_timestamp_millis(millis)
        .unwrap_or(chrono::DateTime::<chrono::Utc>::UNIX_EPOCH)
        .to_rfc3339_opts(chrono::SecondsFormat::Millis, true)
}