xmtp_api_d14n/queries/v3/
identity.rs1use crate::protocol::CursorStore;
2use crate::{V3Client, v3::*};
3use xmtp_common::RetryableError;
4use xmtp_proto::api::{ApiClientError, Client, Query};
5use xmtp_proto::api_client::XmtpIdentityClient;
6use xmtp_proto::identity_v1;
7use xmtp_proto::xmtp::identity::associations::IdentifierKind;
8
9#[xmtp_common::async_trait]
10impl<C, Store, E> XmtpIdentityClient for V3Client<C, Store>
11where
12 C: Client<Error = E>,
13 E: RetryableError + 'static,
14 Store: CursorStore,
15{
16 type Error = ApiClientError<E>;
17
18 async fn publish_identity_update(
19 &self,
20 request: identity_v1::PublishIdentityUpdateRequest,
21 ) -> Result<identity_v1::PublishIdentityUpdateResponse, Self::Error> {
22 PublishIdentityUpdate::builder()
23 .identity_update(request.identity_update)
24 .build()?
25 .query(&self.client)
26 .await
27 }
28
29 async fn get_identity_updates_v2(
30 &self,
31 request: identity_v1::GetIdentityUpdatesRequest,
32 ) -> Result<identity_v1::GetIdentityUpdatesResponse, Self::Error> {
33 GetIdentityUpdatesV2::builder()
34 .requests(request.requests)
35 .build()?
36 .query(&self.client)
37 .await
38 }
39
40 async fn get_inbox_ids(
41 &self,
42 request: identity_v1::GetInboxIdsRequest,
43 ) -> Result<identity_v1::GetInboxIdsResponse, Self::Error> {
44 GetInboxIds::builder()
45 .addresses(
46 request
47 .requests
48 .iter()
49 .filter(|r| r.identifier_kind == IdentifierKind::Ethereum as i32)
50 .map(|r| r.identifier.clone())
51 .collect::<Vec<_>>(),
52 )
53 .passkeys(
54 request
55 .requests
56 .iter()
57 .filter(|r| r.identifier_kind == IdentifierKind::Passkey as i32)
58 .map(|r| r.identifier.clone())
59 .collect::<Vec<_>>(),
60 )
61 .build()?
62 .query(&self.client)
63 .await
64 }
65
66 async fn verify_smart_contract_wallet_signatures(
67 &self,
68 request: identity_v1::VerifySmartContractWalletSignaturesRequest,
69 ) -> Result<identity_v1::VerifySmartContractWalletSignaturesResponse, Self::Error> {
70 VerifySmartContractWalletSignatures::builder()
71 .signatures(request.signatures)
72 .build()?
73 .query(&self.client)
74 .await
75 }
76}