diff --git a/keyserver/addons/rust-node-addon/rust-binding-types.js b/keyserver/addons/rust-node-addon/rust-binding-types.js --- a/keyserver/addons/rust-node-addon/rust-binding-types.js +++ b/keyserver/addons/rust-node-addon/rust-binding-types.js @@ -89,6 +89,11 @@ authAccessToken: string, userIds: $ReadOnlyArray, ) => Promise, + +syncPlatformDetails: ( + userId: string, + deviceId: string, + accessToken: string, + ) => Promise, }; export type { RustNativeBindingAPI }; diff --git a/keyserver/addons/rust-node-addon/src/identity_client/mod.rs b/keyserver/addons/rust-node-addon/src/identity_client/mod.rs --- a/keyserver/addons/rust-node-addon/src/identity_client/mod.rs +++ b/keyserver/addons/rust-node-addon/src/identity_client/mod.rs @@ -9,6 +9,7 @@ mod privileged_delete_users; pub mod register_user; pub mod remove_reserved_usernames; +mod sync_platform_details; pub mod upload_one_time_keys; use client_proto::identity_client_service_client::IdentityClientServiceClient; diff --git a/keyserver/addons/rust-node-addon/src/identity_client/sync_platform_details.rs b/keyserver/addons/rust-node-addon/src/identity_client/sync_platform_details.rs new file mode 100644 --- /dev/null +++ b/keyserver/addons/rust-node-addon/src/identity_client/sync_platform_details.rs @@ -0,0 +1,23 @@ +use super::*; + +use grpc_clients::identity::protos::unauth::Empty; +use tracing::debug; + +#[napi] +#[instrument(skip_all)] +pub async fn sync_platform_details( + user_id: String, + device_id: String, + access_token: String, +) -> Result<()> { + let mut identity_client = + get_authenticated_identity_client(user_id, device_id, access_token).await?; + + debug!("Syncing platform details with identity service"); + identity_client + .sync_platform_details(Empty {}) + .await + .map_err(handle_grpc_error)?; + + Ok(()) +}