Skip to content

Commit

Permalink
first pass at exposing description bindings
Browse files Browse the repository at this point in the history
  • Loading branch information
nplasterer committed Jul 1, 2024
1 parent a33bafe commit a01eb7c
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 1 deletion.
3 changes: 3 additions & 0 deletions bindings_ffi/src/mls.rs
Original file line number Diff line number Diff line change
Expand Up @@ -638,13 +638,15 @@ pub struct FfiCreateGroupOptions {
pub permissions: Option<FfiGroupPermissionsOptions>,
pub group_name: Option<String>,
pub group_image_url_square: Option<String>,
pub group_description: Option<String>,
}

impl FfiCreateGroupOptions {
pub fn into_group_metadata_options(self) -> GroupMetadataOptions {
GroupMetadataOptions {
name: self.group_name,
image_url_square: self.group_image_url_square,
description: self.group_description,
}
}
}
Expand Down Expand Up @@ -1538,6 +1540,7 @@ mod tests {
permissions: Some(FfiGroupPermissionsOptions::AdminOnly),
group_name: Some("Group Name".to_string()),
group_image_url_square: Some("url".to_string()),
group_description: Some("group description".to_string())
},
)
.await
Expand Down
2 changes: 2 additions & 0 deletions bindings_node/src/conversations.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,15 @@ pub struct NapiCreateGroupOptions {
pub permissions: Option<GroupPermissions>,
pub group_name: Option<String>,
pub group_image_url_square: Option<String>,
pub group_description: Option<String>,
}

impl NapiCreateGroupOptions {
pub fn into_group_metadata_options(self) -> GroupMetadataOptions {
GroupMetadataOptions {
name: self.group_name,
image_url_square: self.group_image_url_square,
description: self.group_description,
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion xmtp_mls/src/groups/group_mutable_metadata.rs
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ impl GroupMutableMetadata {
);
attributes.insert(
MetadataField::Description.to_string(),
DEFAULT_GROUP_DESCRIPTION.to_string(),
opts.description.unwrap_or_else(|| DEFAULT_GROUP_DESCRIPTION.to_string()),
);
attributes.insert(
MetadataField::GroupImageUrlSquare.to_string(),
Expand Down
7 changes: 7 additions & 0 deletions xmtp_mls/src/groups/intents.rs
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,13 @@ impl UpdateMetadataIntentData {
field_value: group_image_url_square,
}
}

pub fn new_update_group_description(group_description: String) -> Self {
Self {
field_name: MetadataField::Description.to_string(),
field_value: group_description,
}
}
}

impl From<UpdateMetadataIntentData> for Vec<u8> {
Expand Down
36 changes: 36 additions & 0 deletions xmtp_mls/src/groups/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,7 @@ pub struct MlsGroup {
pub struct GroupMetadataOptions {
pub name: Option<String>,
pub image_url_square: Option<String>,
pub description: Option<String>
}

impl Clone for MlsGroup {
Expand Down Expand Up @@ -666,6 +667,41 @@ impl MlsGroup {
}
}

pub async fn update_group_description<ApiClient>(
&self,
client: &Client<ApiClient>,
group_description: String,
) -> Result<(), GroupError>
where
ApiClient: XmtpApi,
{
let conn = self.context.store.conn()?;
let intent_data: Vec<u8> =
UpdateMetadataIntentData::new_update_group_description(group_description)
.into();
let intent = conn.insert_group_intent(NewGroupIntent::new(
IntentKind::MetadataUpdate,
self.group_id.clone(),
intent_data,
))?;

self.sync_until_intent_resolved(conn, intent.id, client)
.await
}

pub fn group_description(&self) -> Result<String, GroupError> {
let mutable_metadata = self.mutable_metadata()?;
match mutable_metadata
.attributes
.get(&MetadataField::Description.to_string())
{
Some(group_description) => Ok(group_description.clone()),
None => Err(GroupError::GroupMutableMetadata(
GroupMutableMetadataError::MissingExtension,
)),
}
}

pub async fn update_group_image_url_square<ApiClient>(
&self,
client: &Client<ApiClient>,
Expand Down

0 comments on commit a01eb7c

Please sign in to comment.