@@ -332,19 +332,6 @@ impl<ScopedClient: ScopedGroupClient> MlsGroup<ScopedClient> {
332
332
}
333
333
334
334
// Load the stored OpenMLS group from the OpenMLS provider's keystore
335
- #[ tracing:: instrument( level = "trace" , skip_all) ]
336
- pub ( crate ) fn load_mls_group (
337
- & self ,
338
- provider : impl OpenMlsProvider ,
339
- ) -> Result < OpenMlsGroup , GroupError > {
340
- let mls_group =
341
- OpenMlsGroup :: load ( provider. storage ( ) , & GroupId :: from_slice ( & self . group_id ) )
342
- . map_err ( |_| GroupError :: GroupNotFound ) ?
343
- . ok_or ( GroupError :: GroupNotFound ) ?;
344
-
345
- Ok ( mls_group)
346
- }
347
-
348
335
#[ tracing:: instrument( level = "trace" , skip_all) ]
349
336
pub ( crate ) fn load_mls_group_with_lock < F , R > (
350
337
& self ,
@@ -358,7 +345,6 @@ impl<ScopedClient: ScopedGroupClient> MlsGroup<ScopedClient> {
358
345
let group_id = self . group_id . clone ( ) ;
359
346
360
347
// Acquire the lock synchronously using blocking_lock
361
-
362
348
let _lock = MLS_COMMIT_LOCK . get_lock_sync ( group_id. clone ( ) ) ?;
363
349
// Load the MLS group
364
350
let mls_group =
@@ -370,6 +356,7 @@ impl<ScopedClient: ScopedGroupClient> MlsGroup<ScopedClient> {
370
356
operation ( mls_group)
371
357
}
372
358
359
+ // Load the stored OpenMLS group from the OpenMLS provider's keystore
373
360
#[ tracing:: instrument( level = "trace" , skip_all) ]
374
361
pub ( crate ) async fn load_mls_group_with_lock_async < F , E , R , Fut > (
375
362
& self ,
@@ -1173,33 +1160,35 @@ impl<ScopedClient: ScopedGroupClient> MlsGroup<ScopedClient> {
1173
1160
///
1174
1161
/// If the current user has been kicked out of the group, `is_active` will return `false`
1175
1162
pub fn is_active ( & self , provider : impl OpenMlsProvider ) -> Result < bool , GroupError > {
1176
- self . load_mls_group_with_lock ( provider, |mls_group| Ok ( mls_group. is_active ( ) ) )
1163
+ self . load_mls_group_with_lock ( provider, |mls_group|
1164
+ Ok ( mls_group. is_active ( ) )
1165
+ )
1177
1166
}
1178
1167
1179
1168
/// Get the `GroupMetadata` of the group.
1180
1169
pub fn metadata ( & self , provider : impl OpenMlsProvider ) -> Result < GroupMetadata , GroupError > {
1181
- self . load_mls_group_with_lock ( provider, |mls_group| {
1170
+ self . load_mls_group_with_lock ( provider, |mls_group|
1182
1171
Ok ( extract_group_metadata ( & mls_group) ?)
1183
- } )
1172
+ )
1184
1173
}
1185
1174
1186
1175
/// Get the `GroupMutableMetadata` of the group.
1187
1176
pub fn mutable_metadata (
1188
1177
& self ,
1189
1178
provider : impl OpenMlsProvider ,
1190
1179
) -> Result < GroupMutableMetadata , GroupError > {
1191
- self . load_mls_group_with_lock ( provider, |mls_group| {
1180
+ self . load_mls_group_with_lock ( provider, |mls_group|
1192
1181
Ok ( GroupMutableMetadata :: try_from ( & mls_group) ?)
1193
- } )
1182
+ )
1194
1183
}
1195
1184
1196
1185
pub fn permissions ( & self ) -> Result < GroupMutablePermissions , GroupError > {
1197
1186
let conn = self . context ( ) . store ( ) . conn ( ) ?;
1198
1187
let provider = XmtpOpenMlsProvider :: new ( conn) ;
1199
1188
1200
- self . load_mls_group_with_lock ( & provider, |mls_group| {
1189
+ self . load_mls_group_with_lock ( & provider, |mls_group|
1201
1190
Ok ( extract_group_permissions ( & mls_group) ?)
1202
- } )
1191
+ )
1203
1192
}
1204
1193
1205
1194
/// Used for testing that dm group validation works as expected.
@@ -1920,17 +1909,17 @@ pub(crate) mod tests {
1920
1909
1921
1910
// Check Amal's MLS group state.
1922
1911
let amal_db = XmtpOpenMlsProvider :: from ( amal. context . store ( ) . conn ( ) . unwrap ( ) ) ;
1923
- let amal_members_len = amal_group. load_mls_group_with_lock ( & amal_db, |amal_mls_group| {
1924
- Ok ( amal_mls_group . members ( ) . count ( ) )
1925
- } ) . unwrap ( ) ;
1912
+ let amal_members_len = amal_group. load_mls_group_with_lock ( & amal_db, |mls_group|
1913
+ Ok ( mls_group . members ( ) . count ( ) )
1914
+ ) . unwrap ( ) ;
1926
1915
1927
1916
assert_eq ! ( amal_members_len, 3 ) ;
1928
1917
1929
1918
// Check Bola's MLS group state.
1930
1919
let bola_db = XmtpOpenMlsProvider :: from ( bola. context . store ( ) . conn ( ) . unwrap ( ) ) ;
1931
- let bola_members_len = bola_group. load_mls_group_with_lock ( & bola_db, |bola_mls_group| {
1932
- Ok ( bola_mls_group . members ( ) . count ( ) )
1933
- } ) . unwrap ( ) ;
1920
+ let bola_members_len = bola_group. load_mls_group_with_lock ( & bola_db, |mls_group|
1921
+ Ok ( mls_group . members ( ) . count ( ) )
1922
+ ) . unwrap ( ) ;
1934
1923
1935
1924
assert_eq ! ( bola_members_len, 3 ) ;
1936
1925
@@ -2009,8 +1998,8 @@ pub(crate) mod tests {
2009
1998
Ok ( mls_group) // Return the updated group if necessary
2010
1999
} ) . unwrap ( ) ;
2011
2000
2012
- force_add_member ( & alix, & bo, & alix_group, & mut mls_group, & provider) . await ;
2013
2001
// Now add bo to the group
2002
+ force_add_member ( & alix, & bo, & alix_group, & mut mls_group, & provider) . await ;
2014
2003
2015
2004
// Bo should not be able to actually read this group
2016
2005
bo. sync_welcomes ( & bo. store ( ) . conn ( ) . unwrap ( ) ) . await . unwrap ( ) ;
@@ -2134,9 +2123,9 @@ pub(crate) mod tests {
2134
2123
assert_eq ! ( messages. len( ) , 2 ) ;
2135
2124
2136
2125
let provider: XmtpOpenMlsProvider = client. context . store ( ) . conn ( ) . unwrap ( ) . into ( ) ;
2137
- let pending_commit_is_none = group. load_mls_group_with_lock ( & provider, |mls_group| {
2126
+ let pending_commit_is_none = group. load_mls_group_with_lock ( & provider, |mls_group|
2138
2127
Ok ( mls_group. pending_commit ( ) . is_none ( ) )
2139
- } ) . unwrap ( ) ;
2128
+ ) . unwrap ( ) ;
2140
2129
2141
2130
assert ! ( pending_commit_is_none) ;
2142
2131
@@ -2317,9 +2306,9 @@ pub(crate) mod tests {
2317
2306
assert ! ( new_installations_were_added. is_ok( ) ) ;
2318
2307
2319
2308
group. sync ( ) . await . unwrap ( ) ;
2320
- let num_members = group. load_mls_group_with_lock ( & provider, |mls_group| {
2309
+ let num_members = group. load_mls_group_with_lock ( & provider, |mls_group|
2321
2310
Ok ( mls_group. members ( ) . collect :: < Vec < _ > > ( ) . len ( ) )
2322
- } ) . unwrap ( ) ;
2311
+ ) . unwrap ( ) ;
2323
2312
2324
2313
assert_eq ! ( num_members, 3 ) ;
2325
2314
}
@@ -3899,9 +3888,9 @@ pub(crate) mod tests {
3899
3888
)
3900
3889
. unwrap ( ) ;
3901
3890
assert ! ( valid_dm_group
3902
- . load_mls_group_with_lock( client. mls_provider( ) . unwrap( ) , |mls_group| {
3891
+ . load_mls_group_with_lock( client. mls_provider( ) . unwrap( ) , |mls_group|
3903
3892
validate_dm_group( & client, & mls_group, added_by_inbox)
3904
- } )
3893
+ )
3905
3894
. is_ok( ) ) ;
3906
3895
3907
3896
// Test case 2: Invalid conversation type
@@ -3917,9 +3906,9 @@ pub(crate) mod tests {
3917
3906
)
3918
3907
. unwrap ( ) ;
3919
3908
assert ! ( matches!(
3920
- invalid_type_group. load_mls_group_with_lock( client. mls_provider( ) . unwrap( ) , |mls_group| {
3909
+ invalid_type_group. load_mls_group_with_lock( client. mls_provider( ) . unwrap( ) , |mls_group|
3921
3910
validate_dm_group( & client, & mls_group, added_by_inbox)
3922
- } ) ,
3911
+ ) ,
3923
3912
Err ( GroupError :: Generic ( msg) ) if msg. contains( "Invalid conversation type" )
3924
3913
) ) ;
3925
3914
// Test case 3: Missing DmMembers
@@ -3939,9 +3928,9 @@ pub(crate) mod tests {
3939
3928
)
3940
3929
. unwrap ( ) ;
3941
3930
assert ! ( matches!(
3942
- mismatched_dm_members_group. load_mls_group_with_lock( client. mls_provider( ) . unwrap( ) , |mls_group| {
3931
+ mismatched_dm_members_group. load_mls_group_with_lock( client. mls_provider( ) . unwrap( ) , |mls_group|
3943
3932
validate_dm_group( & client, & mls_group, added_by_inbox)
3944
- } ) ,
3933
+ ) ,
3945
3934
Err ( GroupError :: Generic ( msg) ) if msg. contains( "DM members do not match expected inboxes" )
3946
3935
) ) ;
3947
3936
@@ -3961,9 +3950,9 @@ pub(crate) mod tests {
3961
3950
)
3962
3951
. unwrap ( ) ;
3963
3952
assert ! ( matches!(
3964
- non_empty_admin_list_group. load_mls_group_with_lock( client. mls_provider( ) . unwrap( ) , |mls_group| {
3953
+ non_empty_admin_list_group. load_mls_group_with_lock( client. mls_provider( ) . unwrap( ) , |mls_group|
3965
3954
validate_dm_group( & client, & mls_group, added_by_inbox)
3966
- } ) ,
3955
+ ) ,
3967
3956
Err ( GroupError :: Generic ( msg) ) if msg. contains( "DM group must have empty admin and super admin lists" )
3968
3957
) ) ;
3969
3958
@@ -3982,9 +3971,9 @@ pub(crate) mod tests {
3982
3971
)
3983
3972
. unwrap ( ) ;
3984
3973
assert ! ( matches!(
3985
- invalid_permissions_group. load_mls_group_with_lock( client. mls_provider( ) . unwrap( ) , |mls_group| {
3974
+ invalid_permissions_group. load_mls_group_with_lock( client. mls_provider( ) . unwrap( ) , |mls_group|
3986
3975
validate_dm_group( & client, & mls_group, added_by_inbox)
3987
- } ) ,
3976
+ ) ,
3988
3977
Err ( GroupError :: Generic ( msg) ) if msg. contains( "Invalid permissions for DM group" )
3989
3978
) ) ;
3990
3979
}
0 commit comments