Merge pull request #7927 from element-hq/hughns/msc4286

Support for experimental MSC4286 to not render external payment details
This commit is contained in:
Mauro
2025-05-28 10:40:33 +02:00
committed by GitHub
3 changed files with 29 additions and 0 deletions

View File

@@ -23,6 +23,16 @@ public extension DTHTMLElement {
// Remove any attachments to fix rendering.
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,
// otherwise prevent the tag from displaying.
if let stringContent = attributedString()?.string,

View File

@@ -239,6 +239,24 @@ Please see LICENSE in the repository root for full details.
XCTAssertFalse(hasAttachment, @"iFrame attachments should be removed as they're not included in the allowedHTMLTags array.");
}
- (void)testMxExternalPaymentDetailsRemoved
{
// Given an HTML string containing a <span> with data-mx-external-payment-details.
NSString *html = @"This is visible<span data-msc4286-external-payment-details>. But text is hidden <a href=\"https://matrix.org\">and this link too</a></span>";
// When rendering this string as an attributed string.
NSAttributedString *attributedString = [eventFormatter renderHTMLString:html
forEvent:anEvent
withRoomState:nil
andLatestRoomState:nil];
// Then the attributed string should have the <span> stripped and not include any attachments.
XCTAssertEqualObjects(attributedString.string, @"This is visible", @"The <span data-msc4286-external-payment-details> tag content should be removed.");
BOOL hasAttachment = [attributedString containsAttachmentsInRange:NSMakeRange(0, attributedString.length)];
XCTAssertFalse(hasAttachment, @"span attachments should be removed as they're not included in the allowedHTMLTags array.");
}
- (void)testRenderHTMLStringWithMXReply
{
// Given an HTML string representing a matrix reply.

View File

@@ -0,0 +1 @@
Support for experimental MSC4286 during event rendering.