Compare commits

...

2 Commits

Author SHA1 Message Date
a8b6b5f10e Remove image, video, and icon from non-media link previews if media links are present to reduce screen clutter
Changelog-Changed: Removed media from regular link previews if media is already being shown
Signed-off-by: Terry Yiu <git@tyiu.xyz>
2025-06-22 22:21:50 -04:00
1bedb6b2bd 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>
2025-06-22 22:20:06 -04:00

View File

@@ -73,15 +73,40 @@ 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)
}
// If media is already being shown, do not show media in the link preview
// to avoid taking up additional screen space.
if case let .separated(separated) = note_artifacts, !separated.media.isEmpty && !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 +133,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 +206,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 {