72 lines
1.7 KiB
Swift
72 lines
1.7 KiB
Swift
import Foundation
|
|
|
|
enum MainContentAllType: String, Decodable, Encodable, CaseIterable, Hashable {
|
|
case audio = "AUDIO"
|
|
case series = "SERIES"
|
|
case original = "ORIGINAL"
|
|
case free = "FREE"
|
|
case point = "POINT"
|
|
|
|
var title: String {
|
|
switch self {
|
|
case .audio:
|
|
return I18n.MainContentAll.TypeChip.audio
|
|
case .series:
|
|
return I18n.MainContentAll.TypeChip.series
|
|
case .original:
|
|
return I18n.MainContentAll.TypeChip.original
|
|
case .free:
|
|
return I18n.MainContentAll.TypeChip.free
|
|
case .point:
|
|
return I18n.MainContentAll.TypeChip.point
|
|
}
|
|
}
|
|
|
|
var usesAudioItems: Bool {
|
|
switch self {
|
|
case .audio, .free, .point:
|
|
return true
|
|
case .series, .original:
|
|
return false
|
|
}
|
|
}
|
|
}
|
|
|
|
struct MainContentAllTabResponse: Decodable {
|
|
let type: MainContentAllType
|
|
let totalCount: Int
|
|
let audios: [MainContentAudioResponse]
|
|
let series: [MainContentSeriesResponse]
|
|
let sort: ContentSort
|
|
let dayOfWeek: SeriesPublishedDaysOfWeek?
|
|
let page: Int
|
|
let size: Int
|
|
let hasNext: Bool
|
|
}
|
|
|
|
struct MainContentAudioResponse: Decodable, Identifiable {
|
|
let audioContentId: Int
|
|
let title: String
|
|
let imageUrl: String?
|
|
let price: Int
|
|
let isAdult: Bool
|
|
let isPointAvailable: Bool
|
|
let isFirstContent: Bool
|
|
let isOriginalSeries: Bool
|
|
let creatorNickname: String
|
|
|
|
var id: Int { audioContentId }
|
|
}
|
|
|
|
struct MainContentSeriesResponse: Decodable, Identifiable {
|
|
let seriesId: Int
|
|
let title: String
|
|
let coverImageUrl: String?
|
|
let creatorNickname: String
|
|
let isOriginal: Bool
|
|
let isAdult: Bool
|
|
|
|
var id: Int { seriesId }
|
|
}
|
|
|