Advertisement
Guest User

Untitled

a guest
Dec 11th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 1.28 KB | None | 0 0
  1.  
  2. class TestViewModel {
  3.  
  4.  
  5.   val repo = RepoteRepoTest()
  6.  
  7.   private fun getAssets() {
  8.     viewModelScope.launch {
  9.       withContext(Dispatchers.Main) {
  10.         showLoading()
  11.         val result = withContext(Dispatchers.IO) { repo.getAssets(errorHandlerCallback) }
  12.         assets.value = result
  13.         hideLoading()
  14.       }
  15.     }
  16.   }
  17.  
  18.   class RemoteRepoTest {
  19.    
  20.     suspend fun getAssets(errorHandler: Response.ResponseErrorHandler): List<AssetDto>? {
  21.       return makeNetworkCall(
  22.         call = {
  23.           ApiClient.getMaintenanceService().getAssets()
  24.         },
  25.         errorHandler = errorHandler
  26.       )
  27.     }
  28.  
  29.     private suspend fun <T : Any> makeNetworkCall(
  30.       call: suspend () -> Response<T>,
  31.       errorHandler: Response.ResponseErrorHandler
  32.     ): T? {
  33.       val response = try {
  34.         call.invoke()
  35.       } catch (e: Exception) {
  36.         e.printStackTrace()
  37.         errorHandler.onResponseError(
  38.           Response<Any>(
  39.             data = null,
  40.             message = e.localizedMessage,
  41.             status = -1,
  42.             ex = e
  43.           )
  44.         )
  45.         return null
  46.       }
  47.       return if (response.isSuccess) {
  48.         response.data
  49.       } else {
  50.         errorHandler.onResponseError(response)
  51.         null
  52.       }
  53.     }
  54.   }
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement