Skip to content

Commit

Permalink
[refactor] : #83 BaseResult, AutoApiResponse Complete
Browse files Browse the repository at this point in the history
  • Loading branch information
SsongSik committed Jun 18, 2023
1 parent 565c07e commit d90e6b0
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 22 deletions.
13 changes: 0 additions & 13 deletions app/src/main/java/com/myongsik/myongsikandroid/base/ApiResponse.kt

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.myongsik.myongsikandroid.base

sealed class BaseResult<out T> {

data class Success<out T>(val data: T) : BaseResult<T>()

data class Error(val errorCode: Int) : BaseResult<Nothing>()
}
Original file line number Diff line number Diff line change
@@ -1,21 +1,26 @@
package com.myongsik.myongsikandroid.base

import com.myongsik.myongsikandroid.util.ErrorConstant
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow
import retrofit2.HttpException
import retrofit2.Response
import java.net.SocketException

fun <T> safeApiCall(call: suspend () -> Response<T>): Flow<ApiResponse<T>> = flow {
emit(ApiResponse.Loading)

fun <T> safeApiCall(call: suspend () -> Response<T>): Flow<BaseResult<T>> = flow {
try {
val response = call()
if (response.isSuccessful) {
emit(ApiResponse.Success(response.body()!!))
val body = response.body()
if (response.isSuccessful && body != null) {
emit(BaseResult.Success(body))
} else {
emit(ApiResponse.Failure(response.code().toString()))
emit(BaseResult.Error(response.code()))
}
} catch (e: Exception) {
when (e) {
is SocketException -> emit(BaseResult.Error(ErrorConstant.EVENT_SOCKET_EXCEPTION))
is HttpException -> emit(BaseResult.Error(ErrorConstant.EVENT_HTTP_EXCEPTION))
else -> emit(BaseResult.Error(ErrorConstant.EVENT_UNKNOWN_HOST_EXCEPTION))
}
} catch (e: Exception) {
e.printStackTrace()
emit(ApiResponse.Failure(e.message ?: e.toString()))
}
}

0 comments on commit d90e6b0

Please sign in to comment.