diff --git a/crates/client/src/client.rs b/crates/client/src/client.rs index 08a3223eb0..eba58304d7 100644 --- a/crates/client/src/client.rs +++ b/crates/client/src/client.rs @@ -1324,6 +1324,10 @@ impl Client { pub fn metrics_id(&self) -> Option> { self.telemetry.metrics_id() } + + pub fn is_staff(&self) -> Option { + self.telemetry.is_staff() + } } impl WeakSubscriber { diff --git a/crates/client/src/telemetry.rs b/crates/client/src/telemetry.rs index 2aa33e6435..748eb48f7e 100644 --- a/crates/client/src/telemetry.rs +++ b/crates/client/src/telemetry.rs @@ -40,6 +40,7 @@ struct TelemetryState { next_event_id: usize, flush_task: Option>, log_file: Option, + is_staff: Option, } const MIXPANEL_EVENTS_URL: &'static str = "https://api.mixpanel.com/track"; @@ -125,6 +126,7 @@ impl Telemetry { flush_task: Default::default(), next_event_id: 0, log_file: None, + is_staff: None, }), }); @@ -202,6 +204,7 @@ impl Telemetry { let device_id = state.device_id.clone(); let metrics_id: Option> = metrics_id.map(|id| id.into()); state.metrics_id = metrics_id.clone(); + state.is_staff = Some(is_staff); drop(state); if let Some((token, device_id)) = MIXPANEL_TOKEN.as_ref().zip(device_id) { @@ -282,6 +285,10 @@ impl Telemetry { self.state.lock().metrics_id.clone() } + pub fn is_staff(self: &Arc) -> Option { + self.state.lock().is_staff + } + fn flush(self: &Arc) { let mut state = self.state.lock(); let mut events = mem::take(&mut state.queue); diff --git a/crates/feedback/src/feedback_editor.rs b/crates/feedback/src/feedback_editor.rs index 8a5e2038de..9363cb2e3b 100644 --- a/crates/feedback/src/feedback_editor.rs +++ b/crates/feedback/src/feedback_editor.rs @@ -96,6 +96,7 @@ struct FeedbackRequestBody<'a> { feedback_text: &'a str, metrics_id: Option>, system_specs: SystemSpecs, + is_staff: bool, token: &'a str, } @@ -205,12 +206,14 @@ impl FeedbackEditor { let feedback_endpoint = format!("{}/api/feedback", *ZED_SERVER_URL); let metrics_id = zed_client.metrics_id(); + let is_staff = zed_client.is_staff(); let http_client = zed_client.http_client(); let request = FeedbackRequestBody { feedback_text: &feedback_text, metrics_id, system_specs, + is_staff: is_staff.unwrap_or(false), token: ZED_SECRET_CLIENT_TOKEN, };