mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 16:10:20 +00:00
Support for experimental MSC4286 to not render external payment details (#4099)
Ref: https://github.com/matrix-org/matrix-spec-proposals/pull/4286
This commit is contained in:
@@ -18,6 +18,16 @@ public extension DTHTMLElement {
|
|||||||
// Remove any attachments to fix rendering.
|
// Remove any attachments to fix rendering.
|
||||||
textAttachment = nil
|
textAttachment = nil
|
||||||
|
|
||||||
|
// Handle special case for span with data-mx-external-payment-details
|
||||||
|
// This could be based on Storefront.current.countryCode to show the link
|
||||||
|
// content in unrestricted countries. e.g. currently USA
|
||||||
|
if name == "span",
|
||||||
|
let attributes = attributes as? [String: String],
|
||||||
|
attributes["data-msc4286-external-payment-details"] != nil {
|
||||||
|
parent.removeChildNode(self)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// If the element has plain text content show that,
|
// If the element has plain text content show that,
|
||||||
// otherwise prevent the tag from displaying.
|
// otherwise prevent the tag from displaying.
|
||||||
if let stringContent = attributedString()?.string,
|
if let stringContent = attributedString()?.string,
|
||||||
|
|||||||
@@ -1020,7 +1020,23 @@ class AttributedStringBuilderTests: XCTestCase {
|
|||||||
XCTAssertEqual(link.confirmationParameters?.internalURL.absoluteString, "https://matrix.org")
|
XCTAssertEqual(link.confirmationParameters?.internalURL.absoluteString, "https://matrix.org")
|
||||||
XCTAssertEqual(link.confirmationParameters?.displayString, "👉️ #room:matrix.org")
|
XCTAssertEqual(link.confirmationParameters?.displayString, "👉️ #room:matrix.org")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func testMxExternalPaymentDetailsRemoved() {
|
||||||
|
let htmlString = "This is visible<span data-msc4286-external-payment-details>. But text is hidden <a href=\"https://matrix.org\">and this link too</a></span>"
|
||||||
|
|
||||||
|
guard let attributedString = attributedStringBuilder.fromHTML(htmlString) else {
|
||||||
|
XCTFail("Could not build the attributed string")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
XCTAssertEqual(String(attributedString.characters), "This is visible")
|
||||||
|
|
||||||
|
for run in attributedString.runs where run.link != nil {
|
||||||
|
XCTFail("No link expected, but found one")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// MARK: - Private
|
// MARK: - Private
|
||||||
|
|
||||||
private func checkLinkIn(attributedString: AttributedString?, expectedLink: String, expectedRuns: Int) {
|
private func checkLinkIn(attributedString: AttributedString?, expectedLink: String, expectedRuns: Int) {
|
||||||
|
|||||||
Reference in New Issue
Block a user