Files
sodalive-ios/SodaLive/Sources/V2/Main/Content/All/Models/MainContentAllTabResponse.swift
2026-07-06 16:28:33 +09:00

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