add proto stuff
This commit is contained in:
@@ -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();
|
||||
}
|
||||
_ => {}
|
||||
|
||||
@@ -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(),
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user