Repository: Automattic/pocket-casts-ios
File: podcasts/New Creation/New Preview/Rules/Episode Preview/PlaylistEpisodePreviewRowView.swift (Swift)

Code before:
                        .foregroundStyle(theme.primaryText02)
                    Text(episode.title ?? "")
                        .font(size: 15.0, style: .body, weight: .medium)
                        .foregroundStyle(theme.primaryText01)
                    HStack {
                        if episode.archived {
                            Image("list_archived")
                                .renderingMode(.template)
                                .resizable()
                                .foregroundColor(theme.primaryText02)
                                .frame(width: 12, height: 12)
                        }
                        if episode.wasDeleted {
                            Image("option-cross-circle")
                                .renderingMode(.template)
                                .resizable()
                                .foregroundColor(theme.primaryText02)
                                .frame(width: 12, height: 12)
                            Text(L10n.podcastUnavailable)
                                .font(size: 12.0, style: .body, weight: .semibold)
                                .foregroundStyle(theme.primaryText02)
                        } else {
                            Text(subtitle)
                                .font(size: 12.0, style: .body, weight: .semibold)
                                .foregroundStyle(theme.primaryText02)
                        }
                        Spacer()
                    }
                }
                Spacer()
            }
        }
        .opacity(episode.played() || episode.archived || episode.wasDeleted ? 0.5 : 1.0)
    }
}

fileprivate struct PlaylistEpisodeImageViewWrapper: UIViewRepresentable {
    let episode: BaseEpisode
    let size: PodcastThumbnailSize

    func makeUIView(context: Context) -> PodcastImageView {
        PodcastImageView()
    }

    func updateUIView(_ podcastImageView: PodcastImageView, context: Context) {
        if let userEpisode = episode as? UserEpisode {
            podcastImageView.setUserEpisode(uuid: userEpisode.uuid, size: size)
        } else {
            podcastImageView.setPodcast(uuid: episode.parentIdentifier(), size: size)
        }
    }

Review comment (suggestion):
@bjtitus I think there are missing parts here. Have a look at the same file ins [this commit](https://github.com/Automattic/pocket-casts-ios/commit/f84191c0080bd979f7f1f85ff5da03d181353451#diff-1dc5bd41a77242427dc22f40d36906b2a7229717a0360c360f119fe67204ec38)

Code after:
                    .frame(height: 1)
                    .if(hideSeparator) {
                        $0.hidden()
                    }
            }
            HStack(spacing: 11.0) {
                PlaylistEpisodeImageViewWrapper(
                    episode: episode,
                    size: .list
                )
                .frame(width: 56, height: 56)
                VStack(alignment: .leading, spacing: 4.0) {
                    Text(EpisodeDateHelper.formattedDate(for: episode))
                        .font(size: 11.0, style: .body, weight: .semibold)
                        .foregroundStyle(theme.primaryText02)
                    Text(episode.title ?? "")
                        .font(size: 15.0, style: .body, weight: .medium)
                        .foregroundStyle(theme.primaryText01)
                    HStack(spacing: 4) {
                        if let subtitleImage {
                            Image(subtitleImage)
                                .renderingMode(.template)
                                .resizable()
                                .frame(width: 12, height: 12)
                        }
                        Text(subtitle)
                        Spacer()
                    }
                    .font(size: 12.0, style: .body, weight: .semibold)
                    .foregroundStyle(theme.primaryText02)
                }
                Spacer()
            }
        }
        .opacity(episode.played() || episode.archived || episode.wasDeleted ? 0.5 : 1.0)
    }
}

fileprivate struct PlaylistEpisodeImageViewWrapper: UIViewRepresentable {
    let episode: BaseEpisode
    let size: PodcastThumbnailSize

    func makeUIView(context: Context) -> PodcastImageView {
        PodcastImageView()
    }

    func updateUIView(_ podcastImageView: PodcastImageView, context: Context) {
        if let userEpisode = episode as? UserEpisode {
            podcastImageView.setUserEpisode(uuid: userEpisode.uuid, size: size)
        } else {
            podcastImageView.setPodcast(uuid: episode.parentIdentifier(), size: size)