feat(chat-character): 추천 캐릭터 섹션 추가 및 새로고침 API 반영

This commit is contained in:
Yu Sung
2025-11-14 01:46:07 +09:00
parent 2c74bb743b
commit 74212405a4
5 changed files with 96 additions and 1 deletions

View File

@@ -15,6 +15,7 @@ final class CharacterViewModel: ObservableObject {
@Published private(set) var recentCharacters: [RecentCharacter] = []
@Published private(set) var popularCharacters: [Character] = []
@Published private(set) var newCharacters: [Character] = []
@Published private(set) var recommendCharacters: [Character] = []
@Published var isLoading: Bool = false
@Published var errorMessage: String = ""
@@ -48,6 +49,46 @@ final class CharacterViewModel: ObservableObject {
self.recentCharacters = data.recentCharacters
self.popularCharacters = data.popularCharacters
self.newCharacters = data.newCharacters
self.recommendCharacters = data.recommendCharacters
} else {
if let message = decoded.message {
self.errorMessage = message
} else {
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
}
self.isShowPopup = true
}
self.isLoading = false
} catch {
self.isLoading = false
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
self.isShowPopup = true
}
}
.store(in: &subscription)
}
func refreshRecommendCharacters() {
isLoading = true
repository.refreshRecommendCharacters()
.sink { result in
switch result {
case .finished:
DEBUG_LOG("finish")
case .failure(let error):
ERROR_LOG(error.localizedDescription)
}
} receiveValue: { response in
let responseData = response.data
do {
let jsonDecoder = JSONDecoder()
let decoded = try jsonDecoder.decode(ApiResponse<[Character]>.self, from: responseData)
if let data = decoded.data, decoded.success {
self.recommendCharacters = data
} else {
if let message = decoded.message {
self.errorMessage = message