Skip to main content

CommonLibrary/Telemetry/
CaptureEvent.rs

1//! Emit a named PostHog event. Stamps the calling `Tier` plus the
2//! standard Land identity (`$app`, `$app_version`, `$build_mode`,
3//! `$component`, `$tier`) so dashboards can pivot by tier without
4//! caller changes.
5
6use crate::Telemetry::{Client, DistinctId, IsAllowed};
7
8pub fn Fn(EventName:&str, Properties:Option<Vec<(&str, &str)>>) {
9	if !IsAllowed::PostHog() {
10		return;
11	}
12
13	let Some(C) = Client::CLIENT.get() else { return };
14
15	let TierStr = Client::TIER.get().map(|T| T.AsStr()).unwrap_or("common");
16
17	let mut Event = posthog_rs::Event::new(EventName, &DistinctId::Fn());
18
19	let _ = Event.insert_prop("$app", "fiddee");
20
21	let _ = Event.insert_prop("$app_version", "0.0.1");
22
23	let _ = Event.insert_prop("$build_mode", "debug");
24
25	let _ = Event.insert_prop("$component", TierStr);
26
27	let _ = Event.insert_prop("$tier", TierStr);
28
29	let _ = Event.insert_prop("$lib", "land-common-telemetry");
30
31	if let Some(Props) = Properties {
32		for (Key, Value) in Props {
33			let _ = Event.insert_prop(Key, Value);
34		}
35	}
36
37	let _ = C.capture(Event);
38}