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)
}