Tweak the power levels when creating a space (#6012)
* Tweak the power levels when creating a space * Also tweak the `invite` power levels for public access rooms
This commit is contained in:
parent
acf919f2fb
commit
ccd358ece5
1 changed files with 17 additions and 9 deletions
|
|
@ -370,6 +370,9 @@ class RustMatrixClient(
|
||||||
|
|
||||||
override suspend fun createRoom(createRoomParams: CreateRoomParameters): Result<RoomId> = withContext(sessionDispatcher) {
|
override suspend fun createRoom(createRoomParams: CreateRoomParameters): Result<RoomId> = withContext(sessionDispatcher) {
|
||||||
runCatchingExceptions {
|
runCatchingExceptions {
|
||||||
|
val hasPublicAccess = createRoomParams.preset == RoomPreset.PUBLIC_CHAT || createRoomParams.joinRuleOverride == JoinRule.Public
|
||||||
|
val powerLevels = defaultRoomCreationPowerLevels(isSpace = createRoomParams.isSpace, isPublic = hasPublicAccess)
|
||||||
|
|
||||||
val rustParams = RustCreateRoomParameters(
|
val rustParams = RustCreateRoomParameters(
|
||||||
name = createRoomParams.name,
|
name = createRoomParams.name,
|
||||||
topic = createRoomParams.topic,
|
topic = createRoomParams.topic,
|
||||||
|
|
@ -383,12 +386,12 @@ class RustMatrixClient(
|
||||||
},
|
},
|
||||||
invite = createRoomParams.invite?.map { it.value },
|
invite = createRoomParams.invite?.map { it.value },
|
||||||
avatar = createRoomParams.avatar,
|
avatar = createRoomParams.avatar,
|
||||||
powerLevelContentOverride = defaultRoomCreationPowerLevels.copy(
|
powerLevelContentOverride = powerLevels.copy(
|
||||||
invite = if (createRoomParams.joinRuleOverride == JoinRule.Knock) {
|
invite = if (createRoomParams.joinRuleOverride == JoinRule.Knock) {
|
||||||
// override the invite power level so it's the same as kick.
|
// override the invite power level so it's the same as kick.
|
||||||
RoomMember.Role.Moderator.powerLevel.toInt()
|
RoomMember.Role.Moderator.powerLevel.toInt()
|
||||||
} else {
|
} else {
|
||||||
null
|
powerLevels.invite
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
joinRuleOverride = createRoomParams.joinRuleOverride?.map(),
|
joinRuleOverride = createRoomParams.joinRuleOverride?.map(),
|
||||||
|
|
@ -833,18 +836,23 @@ class RustMatrixClient(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private val defaultRoomCreationPowerLevels = PowerLevels(
|
private fun defaultRoomCreationPowerLevels(isPublic: Boolean, isSpace: Boolean) = PowerLevels(
|
||||||
usersDefault = null,
|
usersDefault = null,
|
||||||
eventsDefault = null,
|
// Only admins should be able to send events in general
|
||||||
|
eventsDefault = if (isSpace) 100 else null,
|
||||||
stateDefault = null,
|
stateDefault = null,
|
||||||
ban = null,
|
ban = null,
|
||||||
kick = null,
|
kick = null,
|
||||||
redact = null,
|
redact = null,
|
||||||
invite = null,
|
invite = if (isPublic) 0 else 50,
|
||||||
notifications = null,
|
notifications = null,
|
||||||
users = mapOf(),
|
users = mapOf(),
|
||||||
events = mapOf(
|
events = if (!isSpace) {
|
||||||
"m.call.member" to 0,
|
mapOf(
|
||||||
"org.matrix.msc3401.call.member" to 0,
|
"m.call.member" to 0,
|
||||||
)
|
"org.matrix.msc3401.call.member" to 0,
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
mapOf()
|
||||||
|
}
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue