feat(home): 보온 주간 차트 콘텐츠 정렬 기준 추가

- 매출, 판매량, 댓글 수, 좋아요 수
This commit is contained in:
Yu Sung
2025-11-14 02:53:46 +09:00
parent 74212405a4
commit e5810766b1
6 changed files with 89 additions and 4 deletions

View File

@@ -12,6 +12,10 @@ enum SeriesPublishedDaysOfWeek: String, Encodable {
case SUN, MON, TUE, WED, THU, FRI, SAT, RANDOM
}
enum ContentRankingSortType: String, Encodable {
case REVENUE, SALES_COUNT, COMMENT_COUNT, LIKE_COUNT
}
final class HomeTabViewModel: ObservableObject {
private let repository = HomeTabRepository()
private let userRepository = UserRepository()
@@ -35,6 +39,13 @@ final class HomeTabViewModel: ObservableObject {
@Published var pointAvailableContentList: [AudioContentMainItem] = []
@Published var recommendContentList: [AudioContentMainItem] = []
private let sortType = [
"매출": ContentRankingSortType.REVENUE,
"판매량": ContentRankingSortType.SALES_COUNT,
"댓글": ContentRankingSortType.COMMENT_COUNT,
"좋아요": ContentRankingSortType.LIKE_COUNT
]
func fetchData() {
isLoading = true
@@ -237,4 +248,42 @@ final class HomeTabViewModel: ObservableObject {
}
.store(in: &subscription)
}
func getContentRankingBySort(sort: String) {
isLoading = true
repository.getContentRankingBySort(sort: sortType[sort] ?? ContentRankingSortType.REVENUE)
.sink { result in
switch result {
case .finished:
DEBUG_LOG("finish")
case .failure(let error):
ERROR_LOG(error.localizedDescription)
}
} receiveValue: { [unowned self] response in
self.isLoading = false
let responseData = response.data
do {
let jsonDecoder = JSONDecoder()
let decoded = try jsonDecoder.decode(ApiResponse<[GetAudioContentRankingItem]>.self, from: responseData)
if let data = decoded.data, decoded.success {
self.contentRanking = data
} else {
if let message = decoded.message {
self.errorMessage = message
} else {
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
}
self.isShowPopup = true
}
} catch {
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
self.isShowPopup = true
}
}
.store(in: &subscription)
}
}