//
//  GetCreatorProfileResponse.swift
//  SodaLive
//
//  Created by klaus on 2023/08/11.
//

import Foundation

struct GetCreatorProfileResponse: Decodable {
    let creator: CreatorResponse
    let userDonationRanking: [UserDonationRankingResponse]
    let similarCreatorList: [SimilarCreatorResponse]
    let liveRoomList: [LiveRoomResponse]
    let contentList: [GetAudioContentListItem]
    let notice: String
    let communityPostList: [GetCommunityPostListResponse]
    let cheers: GetCheersResponse
    let activitySummary: GetCreatorActivitySummary
    let seriesList: [SeriesListItem]
    let isBlock: Bool
}

struct CreatorResponse: Decodable {
    let creatorId: Int
    let profileUrl: String
    let nickname: String
    let tags: [String]
    let introduce: String
    let instagramUrl: String?
    let youtubeUrl: String?
    let websiteUrl: String?
    let blogUrl: String?
    let isFollow: Bool
    let isNotify: Bool
    let isNotification: Bool
    let notificationRecipientCount: Int
}

struct UserDonationRankingResponse: Decodable {
    let userId: Int
    let nickname: String
    let profileImage: String
    let donationCan: Int?
}

struct SimilarCreatorResponse: Decodable {
    let userId: Int
    let nickname: String
    let profileImage: String
    let tags: [String]
}

struct LiveRoomResponse: Decodable {
    let roomId: Int
    let title: String
    let content: String
    let isPaid: Bool
    let beginDateTime: String
    let coverImageUrl: String
    let isAdult: Bool
    let price: Int
    let channelName: String?
    let managerNickname: String
    let isReservation: Bool
    let isActive: Bool
}

struct GetAudioContentListResponse: Decodable {
    let totalCount: Int
    let items: [GetAudioContentListItem]
}

struct GetAudioContentListItem: Decodable {
    let contentId: Int
    let coverImageUrl: String
    let title: String
    let price: Int
    let themeStr: String
    let duration: String?
    let likeCount: Int
    let commentCount: Int
    let isPin: Bool
    let isAdult: Bool
    let isScheduledToOpen: Bool
    let isRented: Bool
    let isOwned: Bool
    let isSoldOut: Bool
}

struct GetCreatorActivitySummary: Decodable {
    let liveCount: Int
    let liveTime: Int
    let liveContributorCount: Int
    let contentCount: Int
}
