Skip to content

Commit b0a01ea

Browse files
committed
♻️ [refactor] 에러 처리 쪽 하드코딩 되어있던 부분을 개선
- MainFeedError를 구현하여 개선함 - 기존 ViewModelError 타입은 제거
1 parent 2363bcf commit b0a01ea

File tree

5 files changed

+52
-28
lines changed

5 files changed

+52
-28
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
//
2+
// MainFeedError.swift
3+
// Core
4+
//
5+
// Created by Ari on 2023/02/23.
6+
// Copyright © 2023 Fitfty. All rights reserved.
7+
//
8+
9+
import Foundation
10+
11+
public enum MainFeedError: LocalizedError {
12+
case codyLoadFailed
13+
case setUpFailed
14+
case updateFailed
15+
case tagLoadFailed
16+
case bookmarkFailed
17+
}
18+
19+
extension MainFeedError {
20+
public var errorDescription: String? {
21+
switch self {
22+
case .codyLoadFailed: return NSLocalizedString("코디를 불러오는데 실패했습니다.", comment: "No Cody")
23+
case .setUpFailed: return NSLocalizedString("메인화면 설정을 실패했습니다", comment: "Set up failed")
24+
case .updateFailed: return NSLocalizedString("메인화면 업데이트를 실패했습니다.", comment: "Update failed")
25+
case .tagLoadFailed: return NSLocalizedString("태그를 불러오는데 실패했습니다.", comment: "No Tag")
26+
case .bookmarkFailed: return NSLocalizedString("북마크를 반영하는데 실패했습니다.", comment: "Bookmark failed")
27+
}
28+
}
29+
30+
public var userGuideErrorMessage: String {
31+
switch self {
32+
case .codyLoadFailed: return "코디 목록을 업데이트 하는데 알 수 없는 에러가 발생하여 실패하였습니다."
33+
case .setUpFailed: return "메인화면을 설정하는데 알 수 없는 에러가 발생하여 실패하였습니다."
34+
case .updateFailed: return "메인화면을 업데이트 하는데 알 수 없는 에러가 발생하여 실패하였습니다."
35+
case .tagLoadFailed: return "태그 설정을 불러오는데 알 수 없는 에러가 발생하여 실패하였습니다."
36+
case .bookmarkFailed: return "북마크 업데이트를 실패했습니다."
37+
}
38+
}
39+
}

Fitfty/Projects/MainFeed/Sources/Main/Home/Utilities/ViewModelError.swift

Lines changed: 0 additions & 13 deletions
This file was deleted.

Fitfty/Projects/MainFeed/Sources/Main/Home/ViewModel/CodyCellViewModel.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,10 @@ private extension CodyCellViewModel {
7373
do {
7474
let response = try await fitftyRepository.bookmark(isBookmark, boardToken: cody.boardToken)
7575
if response.result == .fail {
76-
let error = ViewModelError.failure(errorCode: response.errorCode ?? "", message: response.message ?? "")
77-
Logger.debug(error: error, message: "북마크 업데이트 실패")
76+
Logger.debug(
77+
error: MainFeedError.bookmarkFailed,
78+
message: "\(response.errorCode ?? ""): \(response.message ?? "")"
79+
)
7880
}
7981
} catch {
8082
Logger.debug(error: error, message: "북마크 업데이트 실패")

Fitfty/Projects/MainFeed/Sources/Main/Home/ViewModel/MainViewModel.swift

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -144,8 +144,8 @@ extension MainViewModel: MainViewModelInput {
144144
configureCodyList(codyList)
145145
]))
146146
} catch {
147-
Logger.debug(error: error, message: "코디 목록 가져오기 실패")
148-
currentState.send(.errorMessage("코디 목록을 업데이트 하는데 알 수 없는 에러가 발생하여 실패하였습니다."))
147+
Logger.debug(error: error, message: MainFeedError.codyLoadFailed.errorDescription ?? "")
148+
currentState.send(.errorMessage(MainFeedError.codyLoadFailed.userGuideErrorMessage))
149149
}
150150
}
151151
}
@@ -170,8 +170,8 @@ private extension MainViewModel {
170170
configureCodyList(codyList)
171171
]))
172172
} catch {
173-
Logger.debug(error: error, message: "사용자 위치 및 날씨, 코디목록 가져오기 실패")
174-
currentState.send(.errorMessage("현재 위치의 날씨 정보에 맞는 데이터를 가져오는데 알 수 없는 에러가 발생했습니다."))
173+
Logger.debug(error: error, message: MainFeedError.setUpFailed.errorDescription ?? "")
174+
currentState.send(.errorMessage(MainFeedError.setUpFailed.userGuideErrorMessage))
175175
}
176176
}
177177
}
@@ -189,8 +189,8 @@ private extension MainViewModel {
189189
configureCodyList(codyList)
190190
]))
191191
} catch {
192-
Logger.debug(error: error, message: "사용자 위치 및 날씨, 코디목록 업데이트 실패")
193-
currentState.send(.errorMessage("현재 위치의 날씨 정보에 맞는 데이터를 가져오는데 알 수 없는 에러가 발생했습니다."))
192+
Logger.debug(error: error, message: MainFeedError.updateFailed.errorDescription ?? "")
193+
currentState.send(.errorMessage(MainFeedError.updateFailed.userGuideErrorMessage))
194194
}
195195
}
196196
}
@@ -222,7 +222,7 @@ private extension MainViewModel {
222222
let tag = WeatherTag(temp: _currentAverageTemp.value)
223223
let response = try await fitftyRepository.fetchCodyList(weather: tag, gender: gender, styles: styles)
224224
guard let codyList = response.data?.pictureDetailInfoList else {
225-
Logger.debug(error: FitftyAPIError.notFound(response.message), message: "코디 목록 조회 실패")
225+
Logger.debug(error: FitftyAPIError.notFound(response.message), message: MainFeedError.codyLoadFailed.errorDescription ?? "")
226226
return []
227227
}
228228
if userManager.getCurrentGuestState() {
@@ -256,9 +256,7 @@ private extension MainViewModel {
256256
userManager.updateGender(data.gender)
257257
userManager.updateGuestState(false)
258258
} else {
259-
Logger.debug(error: ViewModelError.failure(
260-
errorCode: response.errorCode ?? "", message: response.message ?? ""
261-
), message: "태그 설정 조회 실패")
259+
Logger.debug(error: MainFeedError.tagLoadFailed, message: MainFeedError.tagLoadFailed.errorDescription ?? "")
262260
continuation.resume(returning: (.female, []))
263261
}
264262
} catch {

Fitfty/Projects/MainFeed/Sources/Main/Welcome/ViewModel/WelcomeViewModel.swift

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,7 @@ extension WelcomeViewModel: WelcomeViewModelInput {
4747
if let data = response.data {
4848
currentState.send(.nickName(data.nickname))
4949
} else {
50-
Logger.debug(error: ViewModelError.failure(
51-
errorCode: response.errorCode ?? "", message: response.message ?? ""
52-
), message: "태그 설정 조회 실패")
50+
Logger.debug(error: MainFeedError.tagLoadFailed, message: MainFeedError.tagLoadFailed.errorDescription ?? "")
5351
}
5452
} catch {
5553
Logger.debug(error: error, message: "태그 설정 조회 실패")

0 commit comments

Comments
 (0)