use teksilo_core::BuildContext;
use teksilo_core::widget::EventContext;
use crate::bundle::OpenedTelemetry;
use crate::consent::ConsentStore;
use crate::dynamic_reporter::DynamicReporter;
pub trait TelemetryExt {
fn telemetry(&self) -> &OpenedTelemetry {
self.try_telemetry().unwrap_or_else(|| {
panic!(
"TelemetryExt::telemetry(): no OpenedTelemetry registered. \
Call TeksiloAppBuilder::telemetry(TelemetryBundle::new(...)) at startup."
)
})
}
fn consent(&self) -> &ConsentStore {
&self.telemetry().consent
}
fn usage_reporter(&self) -> &DynamicReporter {
&self.telemetry().reporter
}
fn try_telemetry(&self) -> Option<&OpenedTelemetry>;
}
impl<'a> TelemetryExt for BuildContext<'a> {
fn try_telemetry(&self) -> Option<&OpenedTelemetry> {
self.app_state::<OpenedTelemetry>()
}
}
impl<'a> TelemetryExt for EventContext<'a> {
fn try_telemetry(&self) -> Option<&OpenedTelemetry> {
self.app_state::<OpenedTelemetry>()
}
}