aboutsummaryrefslogtreecommitdiff
path: root/Hotline/Shared/AsyncLinkPreview.swift
diff options
context:
space:
mode:
authorDustin Mierau <dustin@mierau.me>2025-10-20 22:15:48 -0700
committerDustin Mierau <dustin@mierau.me>2025-10-20 22:15:48 -0700
commitede41868962ffed386b0da694d14cdfe6cfdb34f (patch)
treef0b91edd1d9c1bbc23de525224b49d6f8e48e815 /Hotline/Shared/AsyncLinkPreview.swift
parent77b3ac3c051fc4e8fa126cd21e261be28f4aad1a (diff)
Cleanup and a bunch of work to fix issues syncing, loading, and general bookmark states in TrackerView. Added search field (substring conjunctive filter on server/bookmark names and descriptions).
Diffstat (limited to 'Hotline/Shared/AsyncLinkPreview.swift')
-rw-r--r--Hotline/Shared/AsyncLinkPreview.swift57
1 files changed, 0 insertions, 57 deletions
diff --git a/Hotline/Shared/AsyncLinkPreview.swift b/Hotline/Shared/AsyncLinkPreview.swift
deleted file mode 100644
index 89b186f..0000000
--- a/Hotline/Shared/AsyncLinkPreview.swift
+++ /dev/null
@@ -1,57 +0,0 @@
-import SwiftUI
-import LinkPresentation
-
-fileprivate 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
- }
-}