You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.4 KiB
55 lines
1.4 KiB
//
|
|
// PodcastViewCell.swift
|
|
// PodcastsClone
|
|
//
|
|
// Created by etudiant on 2023-05-21.
|
|
//
|
|
|
|
import SwiftUI
|
|
|
|
struct PodcastViewCell: View {
|
|
let podcast: Podcast
|
|
|
|
var body: some View {
|
|
VStack(alignment: .leading) {
|
|
Image(uiImage: podcast.image)
|
|
.resizable()
|
|
.scaledToFit()
|
|
.cornerRadius(12)
|
|
|
|
Text(podcast.title)
|
|
.foregroundColor(Color.theme.primary)
|
|
|
|
Text("Updated \(smartDate(podcast.episodes.first?.publicationDate ?? Date()))") .foregroundColor(Color.theme.secondary)
|
|
.font(.footnote)
|
|
}
|
|
}
|
|
|
|
func smartDate(_ date: Date) -> String {
|
|
let calendar = Calendar.current
|
|
let now = Date()
|
|
let components = calendar.dateComponents([.day, .year], from: date, to: now)
|
|
|
|
if let day = components.day {
|
|
switch day {
|
|
case 0:
|
|
return "Today"
|
|
case 1..<7:
|
|
return "\(day)d ago"
|
|
default:
|
|
let formatter = DateFormatter()
|
|
formatter.dateFormat = "dd MMMM yyyy"
|
|
return formatter.string(from: date)
|
|
}
|
|
} else {
|
|
return "Unknown"
|
|
}
|
|
}
|
|
}
|
|
|
|
struct PodcastViewCell_Previews: PreviewProvider {
|
|
static var previews: some View {
|
|
PodcastViewCell(podcast: Stub.podcasts[1])
|
|
}
|
|
}
|