Skip to content

Commit 4068715

Browse files
authored
Expose Message Kind (#621)
* cargo lock keeps changing * set the message kind * get it compiling correctly * run cargo fmt to reformat it
1 parent c4150df commit 4068715

File tree

1 file changed

+35
-5
lines changed

1 file changed

+35
-5
lines changed

bindings_ffi/src/mls.rs

+35-5
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ use xmtp_mls::{
1919
client::Client as MlsClient,
2020
groups::MlsGroup,
2121
storage::{
22-
group_message::StoredGroupMessage, EncryptedMessageStore, EncryptionKey, StorageOption,
22+
group_message::GroupMessageKind, group_message::StoredGroupMessage, EncryptedMessageStore,
23+
EncryptionKey, StorageOption,
2324
},
2425
types::Address,
2526
};
@@ -224,7 +225,10 @@ impl FfiConversations {
224225
Ok(out)
225226
}
226227

227-
pub fn process_streamed_welcome_message(&self, envelope_bytes: Vec<u8>) -> Result<Arc<FfiGroup>, GenericError> {
228+
pub fn process_streamed_welcome_message(
229+
&self,
230+
envelope_bytes: Vec<u8>,
231+
) -> Result<Arc<FfiGroup>, GenericError> {
228232
let inner = self.inner_client.as_ref();
229233
let group = inner.process_streamed_welcome_message(envelope_bytes)?;
230234

@@ -365,23 +369,32 @@ impl FfiGroup {
365369
);
366370

367371
let messages: Vec<FfiMessage> = group
368-
.find_messages(None, opts.sent_before_ns, opts.sent_after_ns, None, opts.limit)?
372+
.find_messages(
373+
None,
374+
opts.sent_before_ns,
375+
opts.sent_after_ns,
376+
None,
377+
opts.limit,
378+
)?
369379
.into_iter()
370380
.map(|msg| msg.into())
371381
.collect();
372382

373383
Ok(messages)
374384
}
375385

376-
pub async fn process_streamed_group_message(&self, envelope_bytes: Vec<u8>) -> Result<FfiMessage, GenericError> {
386+
pub async fn process_streamed_group_message(
387+
&self,
388+
envelope_bytes: Vec<u8>,
389+
) -> Result<FfiMessage, GenericError> {
377390
let group = MlsGroup::new(
378391
self.inner_client.as_ref(),
379392
self.group_id.clone(),
380393
self.created_at_ns,
381394
);
382395
let message = group.process_streamed_group_message(envelope_bytes).await?;
383396
let ffi_message = message.into();
384-
397+
385398
Ok(ffi_message)
386399
}
387400

@@ -484,13 +497,29 @@ impl FfiGroup {
484497
}
485498
}
486499

500+
#[derive(uniffi::Enum)]
501+
pub enum FfiGroupMessageKind {
502+
Application,
503+
MembershipChange,
504+
}
505+
506+
impl From<GroupMessageKind> for FfiGroupMessageKind {
507+
fn from(kind: GroupMessageKind) -> Self {
508+
match kind {
509+
GroupMessageKind::Application => FfiGroupMessageKind::Application,
510+
GroupMessageKind::MembershipChange => FfiGroupMessageKind::MembershipChange,
511+
}
512+
}
513+
}
514+
487515
#[derive(uniffi::Record)]
488516
pub struct FfiMessage {
489517
pub id: Vec<u8>,
490518
pub sent_at_ns: i64,
491519
pub convo_id: Vec<u8>,
492520
pub addr_from: String,
493521
pub content: Vec<u8>,
522+
pub kind: FfiGroupMessageKind,
494523
}
495524

496525
impl From<StoredGroupMessage> for FfiMessage {
@@ -501,6 +530,7 @@ impl From<StoredGroupMessage> for FfiMessage {
501530
convo_id: msg.group_id,
502531
addr_from: msg.sender_account_address,
503532
content: msg.decrypted_message_bytes,
533+
kind: msg.kind.into(),
504534
}
505535
}
506536
}

0 commit comments

Comments
 (0)