add proto stuff

This commit is contained in:
Mikayla Maki
2022-10-02 18:01:37 -07:00
parent 5769cdc354
commit 52dbf2f9b8
13 changed files with 317 additions and 239 deletions
+1 -3
View File
@@ -320,11 +320,9 @@ impl Client {
log::info!("set status on client {}: {:?}", self.id, status);
let mut state = self.state.write();
*state.status.0.borrow_mut() = status;
let user_id = state.credentials.as_ref().map(|c| c.user_id);
match status {
Status::Connected { .. } => {
self.telemetry.set_user_id(user_id);
state._reconnect_task = None;
}
Status::ConnectionLost => {
@@ -353,7 +351,7 @@ impl Client {
}));
}
Status::SignedOut | Status::UpgradeRequired => {
self.telemetry.set_user_id(user_id);
self.telemetry.set_metrics_id(None);
state._reconnect_task.take();
}
_ => {}
+5 -5
View File
@@ -29,7 +29,7 @@ pub struct Telemetry {
#[derive(Default)]
struct TelemetryState {
user_id: Option<Arc<str>>,
metrics_id: Option<Arc<str>>,
device_id: Option<Arc<str>>,
app_version: Option<Arc<str>>,
os_version: Option<Arc<str>>,
@@ -115,7 +115,7 @@ impl Telemetry {
flush_task: Default::default(),
next_event_id: 0,
log_file: None,
user_id: None,
metrics_id: None,
}),
});
@@ -176,8 +176,8 @@ impl Telemetry {
.detach();
}
pub fn set_user_id(&self, user_id: Option<u64>) {
self.state.lock().user_id = user_id.map(|id| id.to_string().into());
pub fn set_metrics_id(&self, metrics_id: Option<String>) {
self.state.lock().metrics_id = metrics_id.map(|s| s.into());
}
pub fn report_event(self: &Arc<Self>, kind: &str, properties: Value) {
@@ -199,7 +199,7 @@ impl Telemetry {
None
},
user_properties: None,
user_id: state.user_id.clone(),
user_id: state.metrics_id.clone(),
device_id: state.device_id.clone(),
os_name: state.os_name,
os_version: state.os_version.clone(),
+7 -3
View File
@@ -142,10 +142,14 @@ impl UserStore {
match status {
Status::Connected { .. } => {
if let Some((this, user_id)) = this.upgrade(&cx).zip(client.user_id()) {
let user = this
let fetch_user = this
.update(&mut cx, |this, cx| this.fetch_user(user_id, cx))
.log_err()
.await;
.log_err();
let fetch_metrics_id =
client.request(proto::GetPrivateUserInfo {}).log_err();
let (user, info) = futures::join!(fetch_user, fetch_metrics_id);
client.telemetry.set_metrics_id(info.map(|i| i.metrics_id));
client.telemetry.report_event("sign in", Default::default());
current_user_tx.send(user).await.ok();
}
}