package com.reactnativeadyendropin.repositories import okhttp3.ResponseBody import retrofit2.Response open class BaseRepository { suspend fun safeApiCall(call: suspend () -> Response, errorMessage: String = ""): T? { val result: Result = safeApiResult(call, errorMessage) var data: T? = null when (result) { is Result.Success -> data = result.data } return data } private suspend fun safeApiResult(call: suspend () -> Response, errorMessage: String = ""): Result { val response = call.invoke() if (response.isSuccessful) return Result.Success(response.body()!!) return Result.Error(response.errorBody()) } } sealed class Result { data class Success(val data: T) : Result() data class Error(val exception: ResponseBody?) : Result() }