@@ -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,9 @@ 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 . insert ( StateEventType :: SpaceChild . into ( ) , manage_rooms_in_space. try_into ( ) ?) ;
164+ }
153165
154166 Ok ( ( ) )
155167 }
@@ -223,6 +235,7 @@ mod tests {
223235 room_name : None ,
224236 room_avatar : None ,
225237 room_topic : None ,
238+ manage_rooms_in_space : None ,
226239 } ;
227240
228241 // When applying the settings to the power levels.
@@ -259,6 +272,7 @@ mod tests {
259272 room_name : Some ( new_level. into ( ) ) ,
260273 room_avatar : Some ( new_level. into ( ) ) ,
261274 room_topic : Some ( new_level. into ( ) ) ,
275+ manage_rooms_in_space : Some ( new_level. into ( ) ) ,
262276 } ;
263277
264278 // When applying the settings to the power levels.
@@ -272,6 +286,7 @@ mod tests {
272286 ( StateEventType :: RoomName . into( ) , new_level) ,
273287 ( StateEventType :: RoomAvatar . into( ) , new_level) ,
274288 ( StateEventType :: RoomTopic . into( ) , new_level) ,
289+ ( StateEventType :: SpaceChild . into( ) , new_level) ,
275290 ] )
276291 ) ;
277292 // And the rest should remain unchanged.
@@ -294,6 +309,7 @@ mod tests {
294309 ( StateEventType :: RoomName . into( ) , original_level) ,
295310 ( StateEventType :: RoomAvatar . into( ) , original_level) ,
296311 ( StateEventType :: RoomTopic . into( ) , original_level) ,
312+ ( StateEventType :: SpaceChild . into( ) , original_level) ,
297313 ] ) ;
298314
299315 let settings = RoomPowerLevelChanges {
@@ -307,6 +323,7 @@ mod tests {
307323 room_name : Some ( power_levels. state_default . into ( ) ) ,
308324 room_avatar : None ,
309325 room_topic : None ,
326+ manage_rooms_in_space : None ,
310327 } ;
311328
312329 // When applying the settings to the power levels.
@@ -321,6 +338,7 @@ mod tests {
321338 ( StateEventType :: RoomName . into( ) , power_levels. state_default) ,
322339 ( StateEventType :: RoomAvatar . into( ) , original_level) ,
323340 ( StateEventType :: RoomTopic . into( ) , original_level) ,
341+ ( StateEventType :: SpaceChild . into( ) , original_level) ,
324342 ] )
325343 ) ;
326344 // And the rest should remain unchanged.
0 commit comments