mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-02 21:33:26 +00:00
Implement link previews for text messages using Apple's LinkPreview framework (#4520)
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
//
|
||||
// Copyright 2025 New Vector Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
||||
// Please see LICENSE files in the repository root for full details.
|
||||
//
|
||||
|
||||
import LinkPresentation
|
||||
|
||||
class LinkMetadataProvider: LinkMetadataProviderProtocol {
|
||||
private(set) var metadataItems = [URL: LinkMetadataProviderItem]()
|
||||
|
||||
func fetchMetadataFor(url: URL) async -> Result<LinkMetadataProviderItem, Error> {
|
||||
if let item = metadataItems[url] {
|
||||
return .success(item)
|
||||
}
|
||||
|
||||
do {
|
||||
let metadata = try await LPMetadataProvider().startFetchingMetadata(for: url)
|
||||
let item = LinkMetadataProviderItem(url: url, metadata: metadata)
|
||||
metadataItems[url] = item
|
||||
return .success(item)
|
||||
} catch {
|
||||
return .failure(error)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user