Implement link previews for text messages using Apple's LinkPreview framework (#4520)

This commit is contained in:
Stefan Ceriu
2025-09-19 15:48:09 +03:00
committed by GitHub
parent 94db3adf3a
commit bfaca7cff9
48 changed files with 347 additions and 31 deletions
@@ -5,6 +5,7 @@
// Please see LICENSE files in the repository root for full details.
//
import Algorithms
import UIKit
struct TextRoomTimelineItem: TextBasedRoomTimelineItem, Equatable {
@@ -28,4 +29,28 @@ struct TextRoomTimelineItem: TextBasedRoomTimelineItem, Equatable {
var contentType: EventBasedMessageTimelineItemContentType {
.text(content)
}
var links: [URL] {
guard let attributedString = content.formattedBody else {
return []
}
let links = attributedString.runs.compactMap { (run: AttributedString.Runs.Run) -> URL? in
if run.link == nil {
return nil
}
guard run.elementX.eventOnRoomAlias == nil,
run.elementX.eventOnRoomID == nil,
run.elementX.roomAlias == nil,
run.elementX.roomID == nil,
run.elementX.userID == nil else {
return nil
}
return run.link
}
return Array(links.uniqued())
}
}