fix join rules on old room versions
This commit is contained in:
parent
d3f637d7ce
commit
d255f2ab22
1 changed files with 7 additions and 0 deletions
|
@ -95,6 +95,7 @@ async function channelToKState(channel, guild) {
|
||||||
via: [reg.ooye.server_name],
|
via: [reg.ooye.server_name],
|
||||||
canonical: true
|
canonical: true
|
||||||
},
|
},
|
||||||
|
/** @type {{join_rule: string, [x: string]: any}} */
|
||||||
"m.room.join_rules/": {
|
"m.room.join_rules/": {
|
||||||
join_rule: "restricted",
|
join_rule: "restricted",
|
||||||
allow: [{
|
allow: [{
|
||||||
|
@ -255,6 +256,12 @@ async function _syncRoom(channelID, shouldActuallySync) {
|
||||||
|
|
||||||
// sync channel state to room
|
// sync channel state to room
|
||||||
const roomKState = await roomToKState(roomID)
|
const roomKState = await roomToKState(roomID)
|
||||||
|
if (+roomKState["m.room.create/"].room_version <= 8) {
|
||||||
|
// join_rule `restricted` is not available in room version < 8 and not working properly in version == 8
|
||||||
|
// read more: https://spec.matrix.org/v1.8/rooms/v9/
|
||||||
|
// we have to use `public` instead, otherwise the room will be unjoinable.
|
||||||
|
channelKState["m.room.join_rules/"] = {join_rule: "public"}
|
||||||
|
}
|
||||||
const roomDiff = ks.diffKState(roomKState, channelKState)
|
const roomDiff = ks.diffKState(roomKState, channelKState)
|
||||||
const roomApply = applyKStateDiffToRoom(roomID, roomDiff)
|
const roomApply = applyKStateDiffToRoom(roomID, roomDiff)
|
||||||
db.prepare("UPDATE channel_room SET name = ? WHERE room_id = ?").run(channel.name, roomID)
|
db.prepare("UPDATE channel_room SET name = ? WHERE room_id = ?").run(channel.name, roomID)
|
||||||
|
|
Loading…
Reference in a new issue