Skip to content

Commit 16f0cec

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

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

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

Lines changed: 19 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,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

Comments
 (0)