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 } }