Skip to content

Commit eb5cd3d

Browse files
committed
feat(sdk): Add a power level value field for StateEventType::SpaceChild
1 parent a3424a7 commit eb5cd3d

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

crates/matrix-sdk/src/room/power_levels.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

5962
impl 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

Comments
 (0)