mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-04 19:44:05 +00:00
Implement link previews for text messages using Apple's LinkPreview framework (#4520)
This commit is contained in:
+25
@@ -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())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user