aboutsummaryrefslogtreecommitdiff
path: root/Hotline/Shared/AsyncLinkPreview.swift
diff options
context:
space:
mode:
authorRuben Beltran del Rio <git@r.bdr.sh>2025-11-27 23:38:04 +0100
committerRuben Beltran del Rio <git@r.bdr.sh>2025-11-27 23:38:04 +0100
commit213710bf5bd6413c747bf126db50816ef5de5a6e (patch)
tree912f8cf87955a08077c92fea8ad934f50b7ab975 /Hotline/Shared/AsyncLinkPreview.swift
parentf466b21dc02f78c984ba6748e703f6780a7a0db4 (diff)
parent6a95b53616a4abfa306ddce43151cf4fefbd20ed (diff)
Merge remote-tracking branch 'upstream/main'
Diffstat (limited to 'Hotline/Shared/AsyncLinkPreview.swift')
-rw-r--r--Hotline/Shared/AsyncLinkPreview.swift59
1 files changed, 0 insertions, 59 deletions
diff --git a/Hotline/Shared/AsyncLinkPreview.swift b/Hotline/Shared/AsyncLinkPreview.swift
deleted file mode 100644
index 6f32abb..0000000
--- a/Hotline/Shared/AsyncLinkPreview.swift
+++ /dev/null
@@ -1,59 +0,0 @@
-import LinkPresentation
-import SwiftUI
-
-private class CustomLinkView: LPLinkView {
- override var intrinsicContentSize: CGSize {
- CGSize(width: 0, height: super.intrinsicContentSize.height)
- }
-}
-
-struct AsyncLinkPreview: View {
- @State private var metadata: LPLinkMetadata?
- @State private var isLoading = true
- let url: URL?
-
- func fetchMetadata() async {
- guard let url else {
- self.isLoading = false
- return
- }
- do {
- let provider = LPMetadataProvider()
- let metadata = try await provider.startFetchingMetadata(for: url)
- self.metadata = metadata
- self.isLoading = false
- } catch {
- self.isLoading = false
- }
- }
-
- var body: some View {
- if isLoading {
- ProgressView()
- .controlSize(.small)
- .task {
- await self.fetchMetadata()
- }
- } else if let metadata = metadata {
- LinkView(metadata: metadata)
- .frame(width: 200)
- } else {
- Text(LocalizedStringKey(url!.absoluteString))
- .multilineTextAlignment(.leading)
- .tint(Color("Link Color"))
- }
- }
-}
-
-struct LinkView: NSViewRepresentable {
- var metadata: LPLinkMetadata
-
- func makeNSView(context: Context) -> LPLinkView {
- let linkView = CustomLinkView(metadata: metadata)
- return linkView
- }
-
- func updateNSView(_ nsView: LPLinkView, context: Context) {
- // Nothing required
- }
-}