diff --git a/native/native_rust_library/src/identity/device_list.rs b/native/native_rust_library/src/identity/device_list.rs --- a/native/native_rust_library/src/identity/device_list.rs +++ b/native/native_rust_library/src/identity/device_list.rs @@ -1,6 +1,6 @@ use grpc_clients::identity::get_auth_client; use grpc_clients::identity::protos::auth::{ - GetDeviceListRequest, UpdateDeviceListRequest, + GetDeviceListRequest, PeersDeviceListsRequest, UpdateDeviceListRequest, }; use crate::identity::AuthInfo; @@ -34,6 +34,24 @@ }); } + pub fn get_device_lists_for_users( + auth_user_id: String, + auth_device_id: String, + auth_access_token: String, + user_ids: Vec, + promise_id: u32, + ) { + RUNTIME.spawn(async move { + let auth_info = AuthInfo { + access_token: auth_access_token, + user_id: auth_user_id, + device_id: auth_device_id, + }; + let result = get_device_lists_for_users_helper(auth_info, user_ids).await; + handle_string_result_as_callback(result, promise_id); + }); + } + pub fn update_device_list( auth_user_id: String, auth_device_id: String, @@ -80,6 +98,29 @@ Ok(payload) } +async fn get_device_lists_for_users_helper( + auth_info: AuthInfo, + user_ids: Vec, +) -> Result { + let mut identity_client = get_auth_client( + IDENTITY_SOCKET_ADDR, + auth_info.user_id, + auth_info.device_id, + auth_info.access_token, + CODE_VERSION, + DEVICE_TYPE.as_str_name().to_lowercase(), + ) + .await?; + + let response = identity_client + .get_device_lists_for_users(PeersDeviceListsRequest { user_ids }) + .await? + .into_inner(); + + let payload = serde_json::to_string(&response.users_device_lists)?; + Ok(payload) +} + async fn update_device_list_helper( auth_info: AuthInfo, update_payload: String, diff --git a/native/native_rust_library/src/lib.rs b/native/native_rust_library/src/lib.rs --- a/native/native_rust_library/src/lib.rs +++ b/native/native_rust_library/src/lib.rs @@ -203,6 +203,15 @@ promise_id: u32, ); + #[cxx_name = "identityGetDeviceListsForUsers"] + fn get_device_lists_for_users( + auth_user_id: String, + auth_device_id: String, + auth_access_token: String, + user_ids: Vec, + promise_id: u32, + ); + #[cxx_name = "identityUpdateDeviceList"] fn update_device_list( auth_user_id: String,