package kr.co.vividnext.sodalive.audio_content.detail

import androidx.annotation.Keep
import com.google.gson.annotations.SerializedName
import kr.co.vividnext.sodalive.audio_content.PurchaseOption
import kr.co.vividnext.sodalive.audio_content.comment.GetAudioContentCommentListItem
import kr.co.vividnext.sodalive.audio_content.order.OrderType

@Keep
data class GetAudioContentDetailResponse(
    @SerializedName("contentId") val contentId: Long,
    @SerializedName("title") val title: String,
    @SerializedName("detail") val detail: String,
    @SerializedName("coverImageUrl") val coverImageUrl: String,
    @SerializedName("contentUrl") val contentUrl: String,
    @SerializedName("themeStr") val themeStr: String,
    @SerializedName("tag") val tag: String,
    @SerializedName("price") val price: Int,
    @SerializedName("duration") val duration: String,
    @SerializedName("releaseDate") val releaseDate: String?,
    @SerializedName("totalContentCount") val totalContentCount: Int?,
    @SerializedName("remainingContentCount") val remainingContentCount: Int?,
    @SerializedName("orderSequence") val orderSequence: Int?,
    @SerializedName("isActivePreview") val isActivePreview: Boolean,
    @SerializedName("isAdult") val isAdult: Boolean,
    @SerializedName("isMosaic") val isMosaic: Boolean,
    @SerializedName("existOrdered") val existOrdered: Boolean,
    @SerializedName("purchaseOption") val purchaseOption: PurchaseOption,
    @SerializedName("orderType") val orderType: OrderType?,
    @SerializedName("remainingTime") val remainingTime: String?,
    @SerializedName("creatorOtherContentList")
    val creatorOtherContentList: List<OtherContentResponse>,
    @SerializedName("sameThemeOtherContentList")
    val sameThemeOtherContentList: List<OtherContentResponse>,
    @SerializedName("isCommentAvailable") val isCommentAvailable: Boolean,
    @SerializedName("isLike") val isLike: Boolean,
    @SerializedName("likeCount") val likeCount: Int,
    @SerializedName("commentList") val commentList: List<GetAudioContentCommentListItem>,
    @SerializedName("commentCount") val commentCount: Int,
    @SerializedName("isPin") val isPin: Boolean,
    @SerializedName("isAvailablePin") val isAvailablePin: Boolean,
    @SerializedName("creator") val creator: AudioContentCreator
)

@Keep
data class OtherContentResponse(
    @SerializedName("contentId") val contentId: Long,
    @SerializedName("title") val title: String,
    @SerializedName("coverUrl") val coverUrl: String,
)

@Keep
data class AudioContentCreator(
    @SerializedName("creatorId") val creatorId: Long,
    @SerializedName("nickname") val nickname: String,
    @SerializedName("profileImageUrl") val profileImageUrl: String,
    @SerializedName("isFollowing") val isFollowing: Boolean,
    @SerializedName("isFollow") var isFollow: Boolean,
    @SerializedName("isNotify") var isNotify: Boolean
)
