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
parent 8d9f728cf0
commit 1bedb6b2bd

View File

@@ -73,15 +73,34 @@ struct NoteContentView: View {
} }
var preview: LinkViewRepresentable? { var preview: LinkViewRepresentable? {
guard !blur_images, guard case .loaded(let preview) = preview_model.state,
case .loaded(let preview) = preview_model.state,
case .value(let cached) = preview else { case .value(let cached) = preview else {
return nil 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)) 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 { func truncatedText(content: CompatibleText) -> some View {
Group { Group {
if truncate_very_short { if truncate_very_short {
@@ -108,7 +127,7 @@ struct NoteContentView: View {
func previewView(links: [URL]) -> some View { func previewView(links: [URL]) -> some View {
Group { Group {
if let preview = self.preview, !blur_images { if let preview = self.preview {
if let preview_height { if let preview_height {
preview preview
.frame(height: preview_height) .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 { if with_padding {
previewView(links: artifacts.links).padding(.horizontal) previewView(links: artifacts.links).padding(.horizontal)
} else { } else {