MlsGroup Struct
MlsGroup<Context> is the primary interface for group conversations in LibXMTP.
Fields
| Field | Type | Description |
|---|---|---|
group_id | Vec<u8> | Unique identifier for the group |
dm_id | Option<String> | DM identifier (for DM conversations only) |
conversation_type | ConversationType | Type of conversation (Group, DM, etc.) |
created_at_ns | i64 | Creation timestamp in nanoseconds |
context | Context | Shared context providing dependencies |
Traits
Clone- Groups can be cloned (shares underlying context)PartialEq,Eq- Equality based ongroup_idHash- Hashing based ongroup_idDebug- Formatted debug output
Constructor Methods
new
context- Shared contextgroup_id- Group identifierdm_id- Optional DM identifierconversation_type- Conversation typecreated_at_ns- Creation timestamp
MlsGroup instance
new_cached
context- Shared contextgroup_id- Group identifier
(MlsGroup, StoredGroup)
Errors:
NotFound::GroupById- Group not found in database
create_and_insert
context- Shared contextconversation_type- Must not beConversationType::Dmpermissions_policy_set- Permission policies for the groupopts- Metadata options (name, description, etc.)oneshot_message- Optional oneshot message
MlsGroup instance
Side Effects:
- Creates OpenMLS group
- Stores group in database
- Sets consent state to
Allowed
create_dm_and_insert
context- Shared contextmembership_state- Initial membership statedm_target_inbox_id- Target inbox ID for the DMopts- DM metadata optionsexisting_group_id- Optional existing group ID (for backup restoration)
MlsGroup instance
Messaging Methods
send_message
message- Message content bytes (typically encodedEncodedContent)opts- Send options (includesshould_pushflag)
GroupError::GroupInactive- Group is not active
- Updates installations if needed
- Publishes all pending intents
- Sets group consent state to
Allowed
send_message_optimistic
message- Message content bytesopts- Send options
publish_messages() to publish.
prepare_message_for_later_publish
message- Message content bytesshould_push- Whether to send push notification when publishing
Unpublished status. Use publish_stored_message to publish.
publish_stored_message
message_id- ID of the message to publish
GroupError::GroupInactive- Group is not activeNotFound::MessageById- Message not found
publish_messages
- Updates installations if needed
- Sets group consent state to
Allowed
delete_message
message_id- Raw bytes of the message ID
- Only the original sender or a super admin can delete messages
DeleteMessageError::MessageNotFound- Message not foundDeleteMessageError::NotAuthorized- Not the sender or super adminDeleteMessageError::MessageAlreadyDeleted- Message already deletedDeleteMessageError::NonDeletableMessage- Message type cannot be deleted
Query Methods
find_messages
args- Query arguments (time range, kind, delivery status, limit)
StoredGroupMessage
count_messages
args- Query arguments
find_messages_with_reactions
args- Query arguments
StoredGroupMessageWithReactions
find_enriched_messages
args- Query arguments
DecodedMessage
get_last_read_times
Membership Methods
add_members_by_identity
account_identifiers- Vector of account identifiers to add
UpdateGroupMembershipResult with added/removed members and errors
Errors:
GroupError::UserLimitExceeded- Would exceed MAX_GROUP_SIZEGroupError::AddressNotFound- Some addresses not found
add_members
inbox_ids- Vector of inbox IDs to add
UpdateGroupMembershipResult
remove_members_by_identity
account_addresses_to_remove- Vector of account identifiers to remove
remove_members
inbox_ids- Slice of inbox ID references to remove
update_installations
send_message.
leave_group
GroupLeaveValidationError::NotAGroupMember- Not a memberGroupLeaveValidationError::SingleMemberLeaveRejected- Only memberGroupLeaveValidationError::DmLeaveForbidden- Cannot leave DMsGroupLeaveValidationError::SuperAdminLeaveForbidden- Super admins must be demoted first
remove_members_pending_removal
cleanup_pending_removal_list
Utility Methods
load
StoredGroup with database fields
Errors:
NotFound::GroupById- Group not found
Related Types
SendMessageOpts
UpdateGroupMembershipResult
MsgQueryArgs
Arguments for querying messages:- Time range filtering
- Message kind filtering
- Delivery status filtering
- Limit and offset
Source References
- Definition:
crates/xmtp_mls/src/groups/mod.rs:122 - Constructor:
crates/xmtp_mls/src/groups/mod.rs:290 - Messaging:
crates/xmtp_mls/src/groups/mod.rs:588 - Membership:
crates/xmtp_mls/src/groups/mod.rs:970
