Fix crash with link previews
Changelog-Fixed: Fixed crash with link previews
This commit is contained in:
@@ -12,26 +12,24 @@ class CustomLinkView: LPLinkView {
|
|||||||
override var intrinsicContentSize: CGSize { CGSize(width: 0, height: super.intrinsicContentSize.height) }
|
override var intrinsicContentSize: CGSize { CGSize(width: 0, height: super.intrinsicContentSize.height) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum Metadata {
|
||||||
|
case linkmeta(LPLinkMetadata)
|
||||||
|
case url(URL)
|
||||||
|
}
|
||||||
|
|
||||||
struct LinkViewRepresentable: UIViewRepresentable {
|
struct LinkViewRepresentable: UIViewRepresentable {
|
||||||
|
|
||||||
typealias UIViewType = CustomLinkView
|
typealias UIViewType = CustomLinkView
|
||||||
|
|
||||||
var metadata: LPLinkMetadata?
|
let meta: Metadata
|
||||||
var url: URL?
|
|
||||||
|
|
||||||
func makeUIView(context: Context) -> CustomLinkView {
|
func makeUIView(context: Context) -> CustomLinkView {
|
||||||
|
switch meta {
|
||||||
if let metadata {
|
case .linkmeta(let linkmeta):
|
||||||
let linkView = CustomLinkView(metadata: metadata)
|
return CustomLinkView(metadata: linkmeta)
|
||||||
return linkView
|
case .url(let url):
|
||||||
|
return CustomLinkView(url: url)
|
||||||
}
|
}
|
||||||
|
|
||||||
if let url {
|
|
||||||
let linkView = CustomLinkView(url: url)
|
|
||||||
return linkView
|
|
||||||
}
|
|
||||||
|
|
||||||
return CustomLinkView()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func updateUIView(_ uiView: CustomLinkView, context: Context) {
|
func updateUIView(_ uiView: CustomLinkView, context: Context) {
|
||||||
|
|||||||
@@ -94,8 +94,10 @@ struct NoteContentView: View {
|
|||||||
self.preview
|
self.preview
|
||||||
} else {
|
} else {
|
||||||
ForEach(artifacts.links, id:\.self) { link in
|
ForEach(artifacts.links, id:\.self) { link in
|
||||||
LinkViewRepresentable(url: link)
|
if let url = link {
|
||||||
.frame(height: 50)
|
LinkViewRepresentable(meta: .url(url))
|
||||||
|
.frame(height: 50)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -136,7 +138,7 @@ struct NoteContentView: View {
|
|||||||
if show_images, artifacts.links.count == 1 {
|
if show_images, artifacts.links.count == 1 {
|
||||||
let meta = await getMetaData(for: artifacts.links.first!)
|
let meta = await getMetaData(for: artifacts.links.first!)
|
||||||
|
|
||||||
let view = LinkViewRepresentable(metadata: meta)
|
let view = meta.map { LinkViewRepresentable(meta: .linkmeta($0)) }
|
||||||
previews.store(evid: self.event.id, preview: view)
|
previews.store(evid: self.event.id, preview: view)
|
||||||
self.preview = view
|
self.preview = view
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user