diff --git a/xmtp_api_grpc/src/grpc_api_helper.rs b/xmtp_api_grpc/src/grpc_api_helper.rs index 6ec010a44..1feffd212 100644 --- a/xmtp_api_grpc/src/grpc_api_helper.rs +++ b/xmtp_api_grpc/src/grpc_api_helper.rs @@ -344,19 +344,6 @@ impl MutableApiSubscription for GrpcMutableSubscription { #[async_trait] impl XmtpMlsClient for Client { - #[tracing::instrument(level = "trace", skip_all)] - async fn register_installation( - &self, - req: RegisterInstallationRequest, - ) -> Result { - let client = &mut self.mls_client.clone(); - let res = client.register_installation(req).await; - match res { - Ok(response) => Ok(response.into_inner()), - Err(e) => Err(Error::new(ErrorKind::MlsError).with(e)), - } - } - #[tracing::instrument(level = "trace", skip_all)] async fn upload_key_package(&self, req: UploadKeyPackageRequest) -> Result<(), Error> { let client = &mut self.mls_client.clone(); @@ -425,18 +412,6 @@ impl XmtpMlsClient for Client { .map_err(|e| Error::new(ErrorKind::MlsError).with(e)) } - #[tracing::instrument(level = "trace", skip_all)] - async fn get_identity_updates( - &self, - req: GetIdentityUpdatesRequest, - ) -> Result { - let client = &mut self.mls_client.clone(); - let res = client.get_identity_updates(req).await; - - res.map(|r| r.into_inner()) - .map_err(|e| Error::new(ErrorKind::MlsError).with(e)) - } - async fn subscribe_group_messages( &self, req: SubscribeGroupMessagesRequest, diff --git a/xmtp_api_http/src/lib.rs b/xmtp_api_http/src/lib.rs index a375ded72..e4708371d 100644 --- a/xmtp_api_http/src/lib.rs +++ b/xmtp_api_http/src/lib.rs @@ -13,11 +13,10 @@ use xmtp_proto::xmtp::mls::api::v1::{GroupMessage, WelcomeMessage}; use xmtp_proto::{ api_client::{GroupMessageStream, WelcomeMessageStream, XmtpMlsClient}, xmtp::mls::api::v1::{ - FetchKeyPackagesRequest, FetchKeyPackagesResponse, GetIdentityUpdatesRequest, - GetIdentityUpdatesResponse, QueryGroupMessagesRequest, QueryGroupMessagesResponse, - QueryWelcomeMessagesRequest, QueryWelcomeMessagesResponse, RegisterInstallationRequest, - RegisterInstallationResponse, SendGroupMessagesRequest, SendWelcomeMessagesRequest, - SubscribeGroupMessagesRequest, SubscribeWelcomeMessagesRequest, UploadKeyPackageRequest, + FetchKeyPackagesRequest, FetchKeyPackagesResponse, QueryGroupMessagesRequest, + QueryGroupMessagesResponse, QueryWelcomeMessagesRequest, QueryWelcomeMessagesResponse, + SendGroupMessagesRequest, SendWelcomeMessagesRequest, SubscribeGroupMessagesRequest, + SubscribeWelcomeMessagesRequest, UploadKeyPackageRequest, }, }; @@ -54,25 +53,6 @@ impl XmtpHttpApiClient { #[cfg_attr(not(target_arch = "wasm32"), async_trait)] #[cfg_attr(target_arch = "wasm32", async_trait(?Send))] impl XmtpMlsClient for XmtpHttpApiClient { - async fn register_installation( - &self, - request: RegisterInstallationRequest, - ) -> Result { - let res = self - .http_client - .post(self.endpoint(ApiEndpoints::REGISTER_INSTALLATION)) - .json(&request) - .send() - .await - .map_err(|e| Error::new(ErrorKind::MlsError).with(e))? - .bytes() - .await - .map_err(|e| Error::new(ErrorKind::MlsError).with(e))?; - - log::debug!("register_installation"); - handle_error(&*res) - } - async fn upload_key_package(&self, request: UploadKeyPackageRequest) -> Result<(), Error> { let res = self .http_client @@ -143,14 +123,6 @@ impl XmtpMlsClient for XmtpHttpApiClient { handle_error(&*res) } - // deprecated - async fn get_identity_updates( - &self, - _request: GetIdentityUpdatesRequest, - ) -> Result { - unimplemented!() - } - async fn query_group_messages( &self, request: QueryGroupMessagesRequest, @@ -287,10 +259,10 @@ mod tests { use super::*; #[tokio::test] - async fn test_register_installation() { + async fn test_upload_key_package() { let client = XmtpHttpApiClient::new(ApiUrls::LOCAL_ADDRESS.to_string()).unwrap(); let result = client - .register_installation(RegisterInstallationRequest { + .upload_key_package(UploadKeyPackageRequest { is_inbox_id_credential: false, key_package: Some(KeyPackageUpload { key_package_tls_serialized: vec![1, 2, 3], diff --git a/xmtp_mls/src/api/mls.rs b/xmtp_mls/src/api/mls.rs index eaf3af6b4..44e7ecf9e 100644 --- a/xmtp_mls/src/api/mls.rs +++ b/xmtp_mls/src/api/mls.rs @@ -6,15 +6,13 @@ use xmtp_proto::api_client::{ Error as ApiError, ErrorKind, GroupMessageStream, WelcomeMessageStream, }; use xmtp_proto::xmtp::mls::api::v1::{ - get_identity_updates_response::update::Kind as UpdateKind, group_message_input::{Version as GroupMessageInputVersion, V1 as GroupMessageInputV1}, subscribe_group_messages_request::Filter as GroupFilterProto, subscribe_welcome_messages_request::Filter as WelcomeFilterProto, - FetchKeyPackagesRequest, GetIdentityUpdatesRequest, GroupMessage, GroupMessageInput, - KeyPackageUpload, PagingInfo, QueryGroupMessagesRequest, QueryWelcomeMessagesRequest, - RegisterInstallationRequest, SendGroupMessagesRequest, SendWelcomeMessagesRequest, - SortDirection, SubscribeGroupMessagesRequest, SubscribeWelcomeMessagesRequest, - UploadKeyPackageRequest, WelcomeMessage, WelcomeMessageInput, + FetchKeyPackagesRequest, GroupMessage, GroupMessageInput, KeyPackageUpload, PagingInfo, + QueryGroupMessagesRequest, QueryWelcomeMessagesRequest, SendGroupMessagesRequest, + SendWelcomeMessagesRequest, SortDirection, SubscribeGroupMessagesRequest, + SubscribeWelcomeMessagesRequest, UploadKeyPackageRequest, WelcomeMessage, WelcomeMessageInput, }; /// A filter for querying group messages @@ -63,8 +61,6 @@ pub enum IdentityUpdate { type KeyPackageMap = HashMap, Vec>; -type IdentityUpdatesMap = HashMap>; - impl ApiClientWrapper where ApiClient: XmtpApi, @@ -157,33 +153,6 @@ where Ok(out) } - /// Register an XMTP KeyPackage with the network. - /// New InboxID clients should set `is_inbox_id_credential` to true. - /// V3 clients should have `is_inbox_id_credential` to `false`. - /// Not indicating your client version will result in validation failure. - #[tracing::instrument(level = "trace", skip_all)] - pub async fn register_installation( - &self, - key_package: Vec, - is_inbox_id_credential: bool, - ) -> Result, ApiError> { - let res = retry_async!( - self.retry_strategy, - (async { - self.api_client - .register_installation(RegisterInstallationRequest { - key_package: Some(KeyPackageUpload { - key_package_tls_serialized: key_package.to_vec(), - }), - is_inbox_id_credential, - }) - .await - }) - )?; - - Ok(res.installation_key) - } - /// Upload a KeyPackage to the network /// New InboxID clients should set `is_inbox_id_credential` to true. /// V3 clients should have `is_inbox_id_credential` to `false`. @@ -266,66 +235,6 @@ where Ok(()) } - #[tracing::instrument(level = "trace", skip_all)] - pub async fn get_identity_updates( - &self, - start_time_ns: u64, - account_addresses: Vec, - ) -> Result { - let result = retry_async!( - self.retry_strategy, - (async { - self.api_client - .get_identity_updates(GetIdentityUpdatesRequest { - start_time_ns, - account_addresses: account_addresses.clone(), - }) - .await - }) - )?; - - if result.updates.len() != account_addresses.len() { - println!("mismatched number of results"); - return Err(ApiError::new(ErrorKind::MlsError)); - } - - let mapping: IdentityUpdatesMap = result - .updates - .into_iter() - .zip(account_addresses.into_iter()) - .map(|(update, account_address)| { - ( - account_address, - update - .updates - .into_iter() - .map(|update| match update.kind { - Some(UpdateKind::NewInstallation(new_installation)) => { - IdentityUpdate::NewInstallation(NewInstallation { - timestamp_ns: update.timestamp_ns, - installation_key: new_installation.installation_key, - credential_bytes: new_installation.credential_identity, - }) - } - Some(UpdateKind::RevokedInstallation(revoke_installation)) => { - IdentityUpdate::RevokeInstallation(RevokeInstallation { - timestamp_ns: update.timestamp_ns, - installation_key: revoke_installation.installation_key, - }) - } - None => { - println!("no update kind"); - IdentityUpdate::Invalid - } - }) - .collect(), - ) - }) - .collect(); - - Ok(mapping) - } - #[tracing::instrument(level = "trace", skip_all)] pub async fn send_group_messages(&self, group_messages: Vec<&[u8]>) -> Result<(), ApiError> { let to_send: Vec = group_messages @@ -396,22 +305,6 @@ pub mod tests { }, }; - #[tokio::test] - async fn test_register_installation() { - let mut mock_api = MockApiClient::new(); - mock_api.expect_register_installation().returning(move |_| { - Ok(RegisterInstallationResponse { - installation_key: vec![1, 2, 3], - }) - }); - let wrapper = ApiClientWrapper::new(mock_api, Retry::default()); - let result = wrapper - .register_installation(vec![2, 3, 4], false) - .await - .unwrap(); - assert_eq!(result, vec![1, 2, 3]); - } - #[tokio::test] async fn test_upload_key_package() { let mut mock_api = MockApiClient::new(); @@ -465,81 +358,6 @@ pub mod tests { } } - #[tokio::test] - async fn test_get_identity_updates() { - let mut mock_api = MockApiClient::new(); - let start_time_ns = 12; - let account_addresses = vec!["wallet1".to_string(), "wallet2".to_string()]; - // account_addresses gets moved below but needs to be used for assertions later - let account_addresses_clone = account_addresses.clone(); - mock_api - .expect_get_identity_updates() - .withf(move |req| { - req.start_time_ns.eq(&start_time_ns) && req.account_addresses.eq(&account_addresses) - }) - .returning(move |_| { - Ok(GetIdentityUpdatesResponse { - updates: { - vec![ - WalletUpdates { - updates: vec![Update { - timestamp_ns: 1, - kind: Some(UpdateKind::NewInstallation( - NewInstallationUpdate { - installation_key: vec![1, 2, 3], - credential_identity: vec![4, 5, 6], - }, - )), - }], - }, - WalletUpdates { - updates: vec![Update { - timestamp_ns: 2, - kind: Some(UpdateKind::NewInstallation( - NewInstallationUpdate { - installation_key: vec![7, 8, 9], - credential_identity: vec![10, 11, 12], - }, - )), - }], - }, - ] - }, - }) - }); - - let wrapper = ApiClientWrapper::new(mock_api, Retry::default()); - let result = wrapper - .get_identity_updates(start_time_ns, account_addresses_clone.clone()) - .await - .unwrap(); - assert_eq!(result.len(), 2); - - for (k, v) in result { - if k.eq(&account_addresses_clone[0]) { - assert_eq!(v.len(), 1); - assert_eq!( - v[0], - super::IdentityUpdate::NewInstallation(super::NewInstallation { - installation_key: vec![1, 2, 3], - credential_bytes: vec![4, 5, 6], - timestamp_ns: 1, - }) - ); - } else { - assert_eq!(v.len(), 1); - assert_eq!( - v[0], - super::IdentityUpdate::NewInstallation(super::NewInstallation { - installation_key: vec![7, 8, 9], - credential_bytes: vec![10, 11, 12], - timestamp_ns: 2, - }) - ); - } - } - } - #[tokio::test] async fn test_read_group_messages_single_page() { let mut mock_api = MockApiClient::new(); diff --git a/xmtp_mls/src/api/test_utils.rs b/xmtp_mls/src/api/test_utils.rs index 9f0a1f8e0..5ebef40c3 100644 --- a/xmtp_mls/src/api/test_utils.rs +++ b/xmtp_mls/src/api/test_utils.rs @@ -44,10 +44,6 @@ mock! { #[async_trait] impl XmtpMlsClient for ApiClient { - async fn register_installation( - &self, - request: RegisterInstallationRequest, - ) -> Result; async fn upload_key_package(&self, request: UploadKeyPackageRequest) -> Result<(), Error>; async fn fetch_key_packages( &self, @@ -55,10 +51,6 @@ mock! { ) -> Result; async fn send_group_messages(&self, request: SendGroupMessagesRequest) -> Result<(), Error>; async fn send_welcome_messages(&self, request: SendWelcomeMessagesRequest) -> Result<(), Error>; - async fn get_identity_updates( - &self, - request: GetIdentityUpdatesRequest, - ) -> Result; async fn query_group_messages(&self, request: QueryGroupMessagesRequest) -> Result; async fn query_welcome_messages(&self, request: QueryWelcomeMessagesRequest) -> Result; async fn subscribe_group_messages(&self, request: SubscribeGroupMessagesRequest) -> Result; diff --git a/xmtp_mls/src/client.rs b/xmtp_mls/src/client.rs index 8c0be881f..6157a25dc 100644 --- a/xmtp_mls/src/client.rs +++ b/xmtp_mls/src/client.rs @@ -664,7 +664,7 @@ mod tests { let client = ClientBuilder::new_test_client(&generate_local_wallet()).await; let result = client .api_client - .register_installation(vec![1, 2, 3], false) + .upload_key_package(vec![1, 2, 3], false) .await; assert!(result.is_err()); diff --git a/xmtp_proto/src/api_client.rs b/xmtp_proto/src/api_client.rs index 418da0a9c..c48d9038f 100644 --- a/xmtp_proto/src/api_client.rs +++ b/xmtp_proto/src/api_client.rs @@ -13,12 +13,10 @@ use crate::xmtp::identity::api::v1::{ GetInboxIdsResponse, PublishIdentityUpdateRequest, PublishIdentityUpdateResponse, }; use crate::xmtp::mls::api::v1::{ - FetchKeyPackagesRequest, FetchKeyPackagesResponse, GetIdentityUpdatesRequest, - GetIdentityUpdatesResponse, GroupMessage, QueryGroupMessagesRequest, + FetchKeyPackagesRequest, FetchKeyPackagesResponse, GroupMessage, QueryGroupMessagesRequest, QueryGroupMessagesResponse, QueryWelcomeMessagesRequest, QueryWelcomeMessagesResponse, - RegisterInstallationRequest, RegisterInstallationResponse, SendGroupMessagesRequest, - SendWelcomeMessagesRequest, SubscribeGroupMessagesRequest, SubscribeWelcomeMessagesRequest, - UploadKeyPackageRequest, WelcomeMessage, + SendGroupMessagesRequest, SendWelcomeMessagesRequest, SubscribeGroupMessagesRequest, + SubscribeWelcomeMessagesRequest, UploadKeyPackageRequest, WelcomeMessage, }; #[derive(Debug)] @@ -144,10 +142,6 @@ pub type WelcomeMessageStream = Pin Result; async fn upload_key_package(&self, request: UploadKeyPackageRequest) -> Result<(), Error>; async fn fetch_key_packages( &self, @@ -156,10 +150,6 @@ pub trait XmtpMlsClient: Send + Sync + 'static { async fn send_group_messages(&self, request: SendGroupMessagesRequest) -> Result<(), Error>; async fn send_welcome_messages(&self, request: SendWelcomeMessagesRequest) -> Result<(), Error>; - async fn get_identity_updates( - &self, - request: GetIdentityUpdatesRequest, - ) -> Result; async fn query_group_messages( &self, request: QueryGroupMessagesRequest,