mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-16 06:28:27 +02:00
Support for experimental MSC4286 to not render external payment details
Ref: https://github.com/matrix-org/matrix-spec-proposals/pull/4286
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user