@@ -54,6 +54,9 @@ pub struct RoomPowerLevelChanges {
5454 /// The level required to change the room's topic.
5555 #[ cfg_attr( feature = "uniffi" , uniffi( default = None ) ) ]
5656 pub room_topic : Option < i64 > ,
57+ /// The level required to modify rooms in this space.
58+ #[ cfg_attr( feature = "uniffi" , uniffi( default = None ) ) ]
59+ pub manage_rooms_in_space : Option < i64 > ,
5760}
5861
5962impl RoomPowerLevelChanges {
@@ -70,6 +73,7 @@ impl RoomPowerLevelChanges {
7073 room_name : None ,
7174 room_avatar : None ,
7275 room_topic : None ,
76+ manage_rooms_in_space : None ,
7377 }
7478 }
7579}
@@ -105,6 +109,11 @@ impl From<RoomPowerLevels> for RoomPowerLevelChanges {
105109 . get ( & StateEventType :: RoomTopic . into ( ) )
106110 . map ( |v| ( * v) . into ( ) )
107111 . or ( Some ( value. state_default . into ( ) ) ) ,
112+ manage_rooms_in_space : value
113+ . events
114+ . get ( & StateEventType :: SpaceChild . into ( ) )
115+ . map ( |v| ( * v) . into ( ) )
116+ . or ( Some ( value. state_default . into ( ) ) ) ,
108117 }
109118 }
110119}
@@ -150,6 +159,10 @@ impl RoomPowerLevelsExt for RoomPowerLevels {
150159 if let Some ( room_topic) = settings. room_topic {
151160 self . events . insert ( StateEventType :: RoomTopic . into ( ) , room_topic. try_into ( ) ?) ;
152161 }
162+ if let Some ( manage_rooms_in_space) = settings. manage_rooms_in_space {
163+ self . events
164+ . insert ( StateEventType :: SpaceChild . into ( ) , manage_rooms_in_space. try_into ( ) ?) ;
165+ }
153166
154167 Ok ( ( ) )
155168 }
@@ -223,6 +236,7 @@ mod tests {
223236 room_name : None ,
224237 room_avatar : None ,
225238 room_topic : None ,
239+ manage_rooms_in_space : None ,
226240 } ;
227241
228242 // When applying the settings to the power levels.
@@ -259,6 +273,7 @@ mod tests {
259273 room_name : Some ( new_level. into ( ) ) ,
260274 room_avatar : Some ( new_level. into ( ) ) ,
261275 room_topic : Some ( new_level. into ( ) ) ,
276+ manage_rooms_in_space : Some ( new_level. into ( ) ) ,
262277 } ;
263278
264279 // When applying the settings to the power levels.
@@ -272,6 +287,7 @@ mod tests {
272287 ( StateEventType :: RoomName . into( ) , new_level) ,
273288 ( StateEventType :: RoomAvatar . into( ) , new_level) ,
274289 ( StateEventType :: RoomTopic . into( ) , new_level) ,
290+ ( StateEventType :: SpaceChild . into( ) , new_level) ,
275291 ] )
276292 ) ;
277293 // And the rest should remain unchanged.
@@ -294,6 +310,7 @@ mod tests {
294310 ( StateEventType :: RoomName . into( ) , original_level) ,
295311 ( StateEventType :: RoomAvatar . into( ) , original_level) ,
296312 ( StateEventType :: RoomTopic . into( ) , original_level) ,
313+ ( StateEventType :: SpaceChild . into( ) , original_level) ,
297314 ] ) ;
298315
299316 let settings = RoomPowerLevelChanges {
@@ -307,6 +324,7 @@ mod tests {
307324 room_name : Some ( power_levels. state_default . into ( ) ) ,
308325 room_avatar : None ,
309326 room_topic : None ,
327+ manage_rooms_in_space : None ,
310328 } ;
311329
312330 // When applying the settings to the power levels.
@@ -321,6 +339,7 @@ mod tests {
321339 ( StateEventType :: RoomName . into( ) , power_levels. state_default) ,
322340 ( StateEventType :: RoomAvatar . into( ) , original_level) ,
323341 ( StateEventType :: RoomTopic . into( ) , original_level) ,
342+ ( StateEventType :: SpaceChild . into( ) , original_level) ,
324343 ] )
325344 ) ;
326345 // And the rest should remain unchanged.
0 commit comments