diff --git a/ElementX/Sources/Other/MatrixEntityRegex.swift b/ElementX/Sources/Other/MatrixEntityRegex.swift index fc56c6f6a..17e7b04ae 100644 --- a/ElementX/Sources/Other/MatrixEntityRegex.swift +++ b/ElementX/Sources/Other/MatrixEntityRegex.swift @@ -34,7 +34,7 @@ enum MatrixEntityRegex: String { case .roomAlias: return "#[A-Z0-9._%#@=+-]+:" + MatrixEntityRegex.homeserver.rawValue case .roomId: - return "![A-Z0-9]+:" + MatrixEntityRegex.homeserver.rawValue + return "![A-Z0-9_\\-\\/]+:" + MatrixEntityRegex.homeserver.rawValue case .eventId: return "\\$[a-z0-9_\\-\\/]+(:[a-z0-9]+\\.[a-z0-9]+)?" case .allUsers: diff --git a/UnitTests/Sources/MatrixEntityRegexTests.swift b/UnitTests/Sources/MatrixEntityRegexTests.swift index 29aea24b7..b7d32413a 100644 --- a/UnitTests/Sources/MatrixEntityRegexTests.swift +++ b/UnitTests/Sources/MatrixEntityRegexTests.swift @@ -41,6 +41,7 @@ class MatrixEntityRegexTests: XCTestCase { func testRoomId() { XCTAssertTrue(MatrixEntityRegex.isMatrixRoomIdentifier("!pMBteVpcoJRdCJxDmn:matrix.org")) + XCTAssertTrue(MatrixEntityRegex.isMatrixRoomIdentifier("!pMBte-Vpco-JRdCJxDmn:matrix.org")) XCTAssertFalse(MatrixEntityRegex.isMatrixRoomIdentifier("pMBteVpcoJRdCJxDmn:matrix.org")) XCTAssertFalse(MatrixEntityRegex.isMatrixRoomIdentifier("!pMBteVpcoJRdCJxDmn.matrix.org")) } diff --git a/UnitTests/Sources/PermalinkBuilderTests.swift b/UnitTests/Sources/PermalinkBuilderTests.swift index 053334ba0..cddc15333 100644 --- a/UnitTests/Sources/PermalinkBuilderTests.swift +++ b/UnitTests/Sources/PermalinkBuilderTests.swift @@ -57,6 +57,17 @@ class PermalinkBuilderTests: XCTestCase { } } + func testMautrixBridgePermalink() throws { + let roomId = "!mautrix-signal-v6:maunium.net" + + do { + let permalink = try PermalinkBuilder.permalinkTo(roomIdentifier: roomId, baseURL: appSettings.permalinkBaseURL) + XCTAssertEqual(permalink, URL(string: "\(appSettings.permalinkBaseURL)/#/!mautrix-signal-v6%3Amaunium.net")) + } catch { + XCTFail("Room identifier must be valid: \(error)") + } + } + func testInvalidRoomIdentifier() { do { _ = try PermalinkBuilder.permalinkTo(roomIdentifier: "This1sN0tV4lid!@#$%^&*()", baseURL: appSettings.permalinkBaseURL) diff --git a/changelog.d/2618.bugfix b/changelog.d/2618.bugfix new file mode 100644 index 000000000..b07d7dd7a --- /dev/null +++ b/changelog.d/2618.bugfix @@ -0,0 +1 @@ +Fix room permalink building, allow dashes in room identifiers \ No newline at end of file