damus

nostr ios client
git clone git://jb55.com/damus
Log | Files | Refs | README | LICENSE

commit c073dd8fead8b83db6a9b5dd6b9075d5d867b3c1
parent 8d9f728cf0b6f60236e619129e54993f56d41f15
Author: Terry Yiu <git@tyiu.xyz>
Date:   Sun, 22 Jun 2025 01:03:50 -0400

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>

Diffstat:
Mdamus/Views/NoteContentView.swift | 31+++++++++++++++++++++++++------
1 file changed, 25 insertions(+), 6 deletions(-)

diff --git 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 {