Fix note rendering to include non-media link previews with image, video, and icon removed when media previews are disabled

Closes: https://github.com/damus-io/damus/issues/3099

Changelog-Fixed: Fixed note rendering to include regular link previews with media removed when media previews are disabled
Signed-off-by: Terry Yiu <git@tyiu.xyz>
This commit is contained in:
2025-06-22 01:03:50 -04:00
committed by Daniel D’Aquino
parent 8d9f728cf0
commit c073dd8fea

View File

@@ -73,15 +73,34 @@ struct NoteContentView: View {
}
var preview: LinkViewRepresentable? {
guard !blur_images,
case .loaded(let preview) = preview_model.state,
guard case .loaded(let preview) = preview_model.state,
case .value(let cached) = preview else {
return nil
}
// If either
// (1) the blur images setting is enabled
// (2) the media previews setting is disabled
// (3) this note content view does not display media
// then do not show media in the link preview.
if blur_images || !damus_state.settings.media_previews || self.options.contains(.no_media) {
return linkPreviewWithNoMedia(cached)
}
return LinkViewRepresentable(meta: .linkmeta(cached))
}
// Creates a LinkViewRepresentable without media previews.
func linkPreviewWithNoMedia(_ cached: CachedMetadata) -> LinkViewRepresentable? {
let linkMetadata = LPLinkMetadata()
linkMetadata.originalURL = cached.meta.originalURL
linkMetadata.title = cached.meta.title
linkMetadata.url = cached.meta.url
return LinkViewRepresentable(meta: .linkmeta(CachedMetadata(meta: linkMetadata)))
}
func truncatedText(content: CompatibleText) -> some View {
Group {
if truncate_very_short {
@@ -108,7 +127,7 @@ struct NoteContentView: View {
func previewView(links: [URL]) -> some View {
Group {
if let preview = self.preview, !blur_images {
if let preview = self.preview {
if let preview_height {
preview
.frame(height: preview_height)
@@ -181,7 +200,7 @@ struct NoteContentView: View {
}
}
if damus_state.settings.media_previews, has_previews {
if has_previews {
if with_padding {
previewView(links: artifacts.links).padding(.horizontal)
} else {