mod session;
mod view;
use uuid::Uuid;
use session::SessionState;
use view::ViewState;
#[derive(Clone, Debug, Eq, PartialEq, Hash)]
pub(crate) struct RumContextSnapshot {
pub session_id: String,
pub view_id: String,
pub view_name: String,
}
pub(crate) struct RumContext {
session: SessionState,
view: ViewState,
}
impl RumContext {
pub fn new() -> Self {
Self {
session: SessionState::new(),
view: ViewState::initial(),
}
}
pub fn snapshot(&mut self) -> RumContextSnapshot {
self.session.touch();
RumContextSnapshot {
session_id: self.session.id_string(),
view_id: self.view.id_string(),
view_name: self.view.name().to_string(),
}
}
pub fn initial_view_snapshot(&self) -> RumContextSnapshot {
RumContextSnapshot {
session_id: self.session.id_string(),
view_id: self.view.id_string(),
view_name: self.view.name().to_string(),
}
}
}
pub(crate) fn uuid_string(uuid: Uuid) -> String {
uuid.hyphenated().to_string()
}