Skip to content

Commit fc58136

Browse files
authored
Merge pull request #106 from YAPP-Github/feat/#105-api-exception
[refactor] #105 API Exception 클래스 구조 개선
2 parents 45d47dd + 603fa8a commit fc58136

5 files changed

Lines changed: 23 additions & 17 deletions

File tree

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.neki.android.core.common.exception
2+
3+
object ApiErrorCode {
4+
const val NO_MORE_RANDOM_POSE = 400
5+
}
Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package com.neki.android.core.common.exception
22

3-
class ServerApiException(
4-
val code: Int,
5-
message: String,
6-
) : Throwable(message)
3+
open class NekiApiException(
4+
open val code: Int,
5+
override val message: String,
6+
override val cause: Throwable?,
7+
) : Exception(message, cause)
78

8-
class ClientApiException(
9-
val code: Int,
10-
message: String,
11-
) : Throwable(message)
9+
class NoMorePoseException(
10+
override val code: Int,
11+
override val message: String,
12+
override val cause: Throwable?,
13+
) : NekiApiException(code, message, cause)

core/data-api/src/main/java/com/neki/android/core/dataapi/repository/PoseRepository.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ import com.neki.android.core.model.Pose
66
import com.neki.android.core.model.SortOrder
77
import kotlinx.coroutines.flow.Flow
88

9-
const val NO_MORE_RANDOM_POSE = 400
10-
119
interface PoseRepository {
1210

1311
fun getPosesFlow(

core/data/src/main/java/com/neki/android/core/data/repository/impl/PoseRepositoryImpl.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@ package com.neki.android.core.data.repository.impl
33
import androidx.paging.Pager
44
import androidx.paging.PagingConfig
55
import androidx.paging.PagingData
6-
import com.neki.android.core.common.exception.ClientApiException
6+
import com.neki.android.core.common.exception.ApiErrorCode.NO_MORE_RANDOM_POSE
7+
import com.neki.android.core.common.exception.NoMorePoseException
78
import com.neki.android.core.data.paging.PosePagingSource
89
import com.neki.android.core.data.paging.ScrapPosePagingSource
910
import com.neki.android.core.data.remote.api.PoseService
1011
import com.neki.android.core.data.util.runSuspendCatching
11-
import com.neki.android.core.dataapi.repository.NO_MORE_RANDOM_POSE
1212
import com.neki.android.core.dataapi.repository.PoseRepository
1313
import com.neki.android.core.model.PeopleCount
1414
import com.neki.android.core.model.Pose
@@ -81,8 +81,9 @@ class PoseRepositoryImpl @Inject constructor(
8181
).data.toModel()
8282
} catch (e: ClientRequestException) {
8383
if (e.response.status.value == NO_MORE_RANDOM_POSE)
84-
throw ClientApiException(NO_MORE_RANDOM_POSE, e.message)
85-
else throw e
84+
throw NoMorePoseException(NO_MORE_RANDOM_POSE, e.message, e)
85+
else
86+
throw e
8687
}
8788
}
8889

feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/random/RandomPoseViewModel.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ package com.neki.android.feature.pose.impl.random
33
import androidx.lifecycle.ViewModel
44
import androidx.lifecycle.viewModelScope
55
import com.neki.android.core.common.coroutine.di.ApplicationScope
6-
import com.neki.android.core.common.exception.ClientApiException
7-
import com.neki.android.core.dataapi.repository.NO_MORE_RANDOM_POSE
6+
import com.neki.android.core.common.exception.ApiErrorCode.NO_MORE_RANDOM_POSE
7+
import com.neki.android.core.common.exception.NoMorePoseException
88
import com.neki.android.core.dataapi.repository.PoseRepository
99
import com.neki.android.core.dataapi.repository.UserRepository
1010
import com.neki.android.core.model.PeopleCount
@@ -168,7 +168,7 @@ internal class RandomPoseViewModel @AssistedInject constructor(
168168
)
169169
}
170170
}.onFailure { error ->
171-
if (error is ClientApiException && error.code == NO_MORE_RANDOM_POSE) {
171+
if (error is NoMorePoseException && error.code == NO_MORE_RANDOM_POSE) {
172172
reduce { copy(hasNewPose = false) }
173173
postSideEffect(RandomPoseEffect.ShowToast("모든 포즈를 불러왔어요"))
174174
} else Timber.e(error)

0 commit comments

Comments
 (0)