Skip to content

Commit 54e98b1

Browse files
authored
Fix identifiers report function (#1739)
* group fix * wip * report members * revert compose file * cleanup * lint
1 parent 5bd0c74 commit 54e98b1

File tree

3 files changed

+31
-8
lines changed

3 files changed

+31
-8
lines changed

bindings_ffi/src/identity.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ use xmtp_id::associations::{ident, Identifier};
44

55
use crate::GenericError;
66

7-
#[derive(uniffi::Record, Hash, PartialEq, Eq, Clone)]
7+
#[derive(uniffi::Record, Hash, PartialEq, Eq, Clone, Debug)]
88
pub struct FfiIdentifier {
99
pub identifier: String,
1010
pub identifier_kind: FfiIdentifierKind,
1111
}
1212

13-
#[derive(uniffi::Enum, Hash, PartialEq, Eq, Clone)]
13+
#[derive(uniffi::Enum, Hash, PartialEq, Eq, Clone, Debug)]
1414
pub enum FfiIdentifierKind {
1515
Ethereum,
1616
Passkey,

bindings_ffi/src/mls.rs

+26-4
Original file line numberDiff line numberDiff line change
@@ -1491,7 +1491,7 @@ impl FfiConversationListItem {
14911491
}
14921492
}
14931493

1494-
#[derive(uniffi::Record)]
1494+
#[derive(uniffi::Record, Debug)]
14951495
pub struct FfiUpdateGroupMembershipResult {
14961496
added_members: HashMap<String, u64>,
14971497
removed_members: Vec<String>,
@@ -3336,7 +3336,7 @@ mod tests {
33363336
identifier_kind: FfiIdentifierKind::Passkey,
33373337
};
33383338
let inbox_id = ident.inbox_id(nonce).unwrap();
3339-
let client = create_client(
3339+
let client2 = create_client(
33403340
connect_to_backend(xmtp_api_grpc::LOCALHOST_ADDRESS.to_string(), false)
33413341
.await
33423342
.unwrap(),
@@ -3351,7 +3351,7 @@ mod tests {
33513351
.await
33523352
.unwrap();
33533353

3354-
let sig_request = client.signature_request().unwrap().clone();
3354+
let sig_request = client2.signature_request().unwrap().clone();
33553355
let challenge = sig_request.signature_text().await.unwrap();
33563356
let challenge_bytes = challenge.as_bytes().to_vec();
33573357

@@ -3387,7 +3387,29 @@ mod tests {
33873387
// should be good
33883388
.unwrap();
33893389

3390-
client.register_identity(sig_request).await.unwrap();
3390+
client2.register_identity(sig_request).await.unwrap();
3391+
3392+
let bob = new_test_client().await;
3393+
let fernando = new_test_client().await;
3394+
let group = client2
3395+
.conversations()
3396+
.create_group_with_inbox_ids(vec![bob.inbox_id()], FfiCreateGroupOptions::default())
3397+
.await
3398+
.unwrap();
3399+
3400+
let result = group
3401+
.add_members_by_inbox_id(vec![fernando.inbox_id(), alex.inbox_id()])
3402+
.await
3403+
.unwrap();
3404+
3405+
assert_eq!(result.added_members.len(), 2);
3406+
3407+
let members = group.list_members().await.unwrap();
3408+
let passkey_ident = client2.account_identifier.identifier.clone();
3409+
assert!(members.into_iter().any(|m| m
3410+
.account_identifiers
3411+
.into_iter()
3412+
.any(|i| i.identifier == passkey_ident)));
33913413
}
33923414

33933415
#[tokio::test(flavor = "multi_thread", worker_threads = 1)]

xmtp_id/src/associations/state.rs

+3-2
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,9 @@ impl AssociationState {
139139
}
140140

141141
pub fn identifiers(&self) -> Vec<Identifier> {
142-
self.members_by_kind(MemberKind::Ethereum)
143-
.into_iter()
142+
self.members
143+
.values()
144+
.cloned()
144145
.filter_map(|member| match member.identifier {
145146
MemberIdentifier::Ethereum(eth) => Some(Identifier::Ethereum(eth)),
146147
MemberIdentifier::Passkey(pk) => Some(Identifier::Passkey(pk)),

0 commit comments

Comments
 (0)