From c073dd8fead8b83db6a9b5dd6b9075d5d867b3c1 Mon Sep 17 00:00:00 2001 From: Terry Yiu Date: Sun, 22 Jun 2025 01:03:50 -0400 Subject: [PATCH] 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 --- damus/Views/NoteContentView.swift | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/damus/Views/NoteContentView.swift b/damus/Views/NoteContentView.swift index dbf8c11c..eaba2cf7 100644 --- a/damus/Views/NoteContentView.swift +++ b/damus/Views/NoteContentView.swift @@ -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 {