mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-04 10:33:45 +00:00
Add default schemes for detected links that don't have any
This commit is contained in:
committed by
Stefan Ceriu
parent
fad608cd34
commit
29b2b7ff4a
@@ -165,7 +165,9 @@ struct AttributedStringBuilder: AttributedStringBuilderProtocol {
|
|||||||
// As of right now we do not handle event id links in any way so there is no need to add them as links
|
// As of right now we do not handle event id links in any way so there is no need to add them as links
|
||||||
// matches.append(contentsOf: MatrixEntityRegex.eventIdentifierRegex.matches(in: string, options: []))
|
// matches.append(contentsOf: MatrixEntityRegex.eventIdentifierRegex.matches(in: string, options: []))
|
||||||
matches.append(contentsOf: MatrixEntityRegex.roomAliasRegex.matches(in: string, options: []))
|
matches.append(contentsOf: MatrixEntityRegex.roomAliasRegex.matches(in: string, options: []))
|
||||||
matches.append(contentsOf: MatrixEntityRegex.linkRegex.matches(in: string, options: []))
|
|
||||||
|
let linkMatches = MatrixEntityRegex.linkRegex.matches(in: string, options: [])
|
||||||
|
matches.append(contentsOf: linkMatches)
|
||||||
guard matches.count > 0 else {
|
guard matches.count > 0 else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -188,7 +190,13 @@ struct AttributedStringBuilder: AttributedStringBuilderProtocol {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
attributedString.addAttribute(.link, value: string[matchRange] as Any, range: match.range)
|
var link = String(string[matchRange])
|
||||||
|
|
||||||
|
if linkMatches.contains(match), !link.contains("://") {
|
||||||
|
link.insert(contentsOf: "https://", at: link.startIndex)
|
||||||
|
}
|
||||||
|
|
||||||
|
attributedString.addAttribute(.link, value: link as Any, range: match.range)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -110,6 +110,23 @@ class AttributedStringBuilderTests: XCTestCase {
|
|||||||
XCTAssertEqual(link?.host, "www.matrix.org")
|
XCTAssertEqual(link?.host, "www.matrix.org")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func testLinkDefaultScheme() {
|
||||||
|
let plainString = "This text contains a matrix.org link."
|
||||||
|
|
||||||
|
guard let attributedString = attributedStringBuilder.fromPlain(plainString) else {
|
||||||
|
XCTFail("Could not build the attributed string")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
XCTAssertEqual(String(attributedString.characters), plainString)
|
||||||
|
|
||||||
|
XCTAssertEqual(attributedString.runs.count, 3)
|
||||||
|
|
||||||
|
let link = attributedString.runs.first(where: { $0.link != nil })?.link
|
||||||
|
|
||||||
|
XCTAssertEqual(link, "https://matrix.org")
|
||||||
|
}
|
||||||
|
|
||||||
func testRenderHTMLStringWithLinkInHeader() {
|
func testRenderHTMLStringWithLinkInHeader() {
|
||||||
let h1HTMLString = "<h1><a href=\"https://www.matrix.org/\">Matrix.org</a></h1>"
|
let h1HTMLString = "<h1><a href=\"https://www.matrix.org/\">Matrix.org</a></h1>"
|
||||||
let h2HTMLString = "<h2><a href=\"https://www.matrix.org/\">Matrix.org</a></h2>"
|
let h2HTMLString = "<h2><a href=\"https://www.matrix.org/\">Matrix.org</a></h2>"
|
||||||
@@ -244,7 +261,7 @@ class AttributedStringBuilderTests: XCTestCase {
|
|||||||
var foundLink = false
|
var foundLink = false
|
||||||
for run in attributedString.runs {
|
for run in attributedString.runs {
|
||||||
if run.link != nil {
|
if run.link != nil {
|
||||||
XCTAssertEqual(run.link?.path, "www.matrix.org")
|
XCTAssertEqual(run.link?.host, "www.matrix.org")
|
||||||
XCTAssertNil(run.uiKit.foregroundColor)
|
XCTAssertNil(run.uiKit.foregroundColor)
|
||||||
foundLink = true
|
foundLink = true
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
Add default schemes for detected links that don't have any
|
||||||
Reference in New Issue
Block a user