diff --git a/crates/collab/src/api.rs b/crates/collab/src/api.rs index a3bc9f8dee..86db1d28d0 100644 --- a/crates/collab/src/api.rs +++ b/crates/collab/src/api.rs @@ -88,8 +88,6 @@ async fn create_user( Extension(app): Extension>, Extension(rpc_server): Extension>, ) -> Result> { - println!("{:?}", params); - let user_id = if let Some(invite_code) = params.invite_code { let invitee_id = app .db @@ -133,15 +131,17 @@ async fn update_user( Path(user_id): Path, Json(params): Json, Extension(app): Extension>, + Extension(rpc_server): Extension>, ) -> Result<()> { + let user_id = UserId(user_id); + if let Some(admin) = params.admin { - app.db.set_user_is_admin(UserId(user_id), admin).await?; + app.db.set_user_is_admin(user_id, admin).await?; } if let Some(invite_count) = params.invite_count { - app.db - .set_invite_count(UserId(user_id), invite_count) - .await?; + app.db.set_invite_count(user_id, invite_count).await?; + rpc_server.invite_count_updated(user_id).await.trace_err(); } Ok(()) diff --git a/crates/collab/src/rpc.rs b/crates/collab/src/rpc.rs index a3eb64034b..407911c390 100644 --- a/crates/collab/src/rpc.rs +++ b/crates/collab/src/rpc.rs @@ -462,6 +462,24 @@ impl Server { Ok(()) } + pub async fn invite_count_updated(self: &Arc, user_id: UserId) -> Result<()> { + if let Some(user) = self.app_state.db.get_user_by_id(user_id).await? { + if let Some(invite_code) = &user.invite_code { + let store = self.store().await; + for connection_id in store.connection_ids_for_user(user_id) { + self.peer.send( + connection_id, + proto::UpdateInviteInfo { + url: format!("{}{}", self.app_state.invite_link_prefix, invite_code), + count: user.invite_count as u32, + }, + )?; + } + } + } + Ok(()) + } + async fn ping( self: Arc, _: TypedEnvelope,