about summary refs log tree commit diff
path: root/MatrixUtils.RoomUpgradeCLI/Extensions/RoomBuilderExtensions.cs
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2026-01-11 16:17:46 +0100
committerRory& <root@rory.gay>2026-01-11 16:17:46 +0100
commit1f7873bbe1dfe39941ee8dbc6def87f8c825d49f (patch)
treeae73e7ceb9ffb43d1fd28acb2e741bf81f0874a4 /MatrixUtils.RoomUpgradeCLI/Extensions/RoomBuilderExtensions.cs
parentSwitch to correct compression flag for blazor assets - this silently broke wi... (diff)
downloadMatrixUtils-master.tar.xz
RoomUpgradeCLI work HEAD master
Diffstat (limited to '')
-rw-r--r--MatrixUtils.RoomUpgradeCLI/Extensions/RoomBuilderExtensions.cs22
1 files changed, 22 insertions, 0 deletions
diff --git a/MatrixUtils.RoomUpgradeCLI/Extensions/RoomBuilderExtensions.cs b/MatrixUtils.RoomUpgradeCLI/Extensions/RoomBuilderExtensions.cs

index 75852bc..f6e5199 100644 --- a/MatrixUtils.RoomUpgradeCLI/Extensions/RoomBuilderExtensions.cs +++ b/MatrixUtils.RoomUpgradeCLI/Extensions/RoomBuilderExtensions.cs
@@ -121,6 +121,28 @@ public static class RoomBuilderExtensions { break; // upgrade options + case "--restrict-old-room": + if (rb is not RoomUpgradeBuilder upgradeBuilderRestrict) { + throw new InvalidOperationException("Restrict old room can only be used with room upgrades"); + } + + var oldRoom = hs.GetRoom(upgradeBuilderRestrict.OldRoomId); + var createEvt = await oldRoom.GetCreateEventAsync(); + if (createEvt == null) { + throw new InvalidOperationException("Could not get create event for old room " + upgradeBuilderRestrict.OldRoomId); + } + + if (!int.TryParse(createEvt.RoomVersion ?? "1", out int numericVersion)) { + Console.WriteLine("Warning: Could not parse old room version '" + createEvt.RoomVersion + "' as a number! Setting restricted join rule may not work."); + } + else if (numericVersion < 8) { + throw new InvalidOperationException( + "Cannot set restrict old room on rooms with version lower than 8!\nhttps://spec.matrix.org/v1.17/rooms/#feature-matrix" + ); + } + + upgradeBuilderRestrict.UpgradeOptions.RestrictOldRoom = GetBoolArg(args, ref i, true); + break; case "--invite-members": if (rb is not RoomUpgradeBuilder upgradeBuilder) { throw new InvalidOperationException("Invite members can only be used with room upgrades");