From abd432fd0e78b487828fa3baa9d531453d8d637b Mon Sep 17 00:00:00 2001 From: Arkadiusz Fal Date: Fri, 17 Apr 2026 06:23:31 +0200 Subject: [PATCH] Show video title placeholder while thumbnails load --- .../Components/DeArrowVideoThumbnail.swift | 6 ++-- Yattee/Views/Video/VideoInfoView.swift | 32 ++++++++----------- 2 files changed, 17 insertions(+), 21 deletions(-) diff --git a/Yattee/Views/Components/DeArrowVideoThumbnail.swift b/Yattee/Views/Components/DeArrowVideoThumbnail.swift index 893c6fdf..508cd54d 100644 --- a/Yattee/Views/Components/DeArrowVideoThumbnail.swift +++ b/Yattee/Views/Components/DeArrowVideoThumbnail.swift @@ -67,10 +67,10 @@ struct DeArrowVideoThumbnail: View { private var downloadProgressIndeterminate: Bool { false } #endif - /// Title to show on placeholder for media source videos without thumbnails. + /// Title to show on placeholder while the thumbnail is loading or absent. private var placeholderTitle: String? { - guard displayThumbnailURL == nil, video.isFromMediaSource else { return nil } - return video.title + let title = video.displayTitle(using: deArrowProvider) + return title.isEmpty ? nil : title } /// Whether to show watched checkmark from settings. diff --git a/Yattee/Views/Video/VideoInfoView.swift b/Yattee/Views/Video/VideoInfoView.swift index a780d821..f3a35f9e 100644 --- a/Yattee/Views/Video/VideoInfoView.swift +++ b/Yattee/Views/Video/VideoInfoView.swift @@ -638,15 +638,13 @@ struct VideoInfoView: View { Rectangle() .fill(.quaternary) .overlay { - if video.bestThumbnail?.url == nil, video.isFromMediaSource { - Text(video.displayTitle(using: appEnvironment?.deArrowBrandingProvider)) - .font(.caption) - .fontWeight(.medium) - .foregroundStyle(.secondary) - .multilineTextAlignment(.center) - .lineLimit(3) - .padding(8) - } + Text(video.displayTitle(using: appEnvironment?.deArrowBrandingProvider)) + .font(.caption) + .fontWeight(.medium) + .foregroundStyle(.secondary) + .multilineTextAlignment(.center) + .lineLimit(3) + .padding(8) } } } @@ -939,15 +937,13 @@ struct VideoInfoView: View { .fill(.quaternary) .clipShape(RoundedRectangle(cornerRadius: 8)) .overlay { - if video.bestThumbnail?.url == nil, video.isFromMediaSource { - Text(video.displayTitle(using: appEnvironment?.deArrowBrandingProvider)) - .font(.caption) - .fontWeight(.medium) - .foregroundStyle(.secondary) - .multilineTextAlignment(.center) - .lineLimit(3) - .padding(8) - } + Text(video.displayTitle(using: appEnvironment?.deArrowBrandingProvider)) + .font(.caption) + .fontWeight(.medium) + .foregroundStyle(.secondary) + .multilineTextAlignment(.center) + .lineLimit(3) + .padding(8) } } }