48 lines
1.3 KiB
Swift
48 lines
1.3 KiB
Swift
import Foundation
|
|
|
|
struct CreatorChannelFanTalkTabResponse: Decodable {
|
|
let fanTalkCount: Int
|
|
let fanTalks: [CreatorChannelFanTalkItemResponse]
|
|
let page: Int
|
|
let size: Int
|
|
let hasNext: Bool
|
|
}
|
|
|
|
struct CreatorChannelFanTalkItemResponse: Decodable, Identifiable {
|
|
let fanTalkId: Int
|
|
let writerId: Int
|
|
let writerNickname: String
|
|
let writerProfileImageUrl: String
|
|
let content: String
|
|
let createdAtUtc: String
|
|
let creatorReplies: [CreatorChannelFanTalkReplyResponse]
|
|
|
|
var id: Int { fanTalkId }
|
|
|
|
var latestCreatorReply: CreatorChannelFanTalkReplyResponse? {
|
|
creatorReplies.max { lhs, rhs in
|
|
switch (DateParser.parse(lhs.createdAtUtc), DateParser.parse(rhs.createdAtUtc)) {
|
|
case let (lhsDate?, rhsDate?):
|
|
return lhsDate < rhsDate
|
|
case (nil, _?):
|
|
return true
|
|
case (_?, nil):
|
|
return false
|
|
case (nil, nil):
|
|
return lhs.createdAtUtc < rhs.createdAtUtc
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
struct CreatorChannelFanTalkReplyResponse: Decodable, Identifiable {
|
|
let fanTalkId: Int
|
|
let writerId: Int
|
|
let writerNickname: String
|
|
let writerProfileImageUrl: String
|
|
let content: String
|
|
let createdAtUtc: String
|
|
|
|
var id: Int { fanTalkId }
|
|
}
|