Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class TestViewModel {
- val repo = RepoteRepoTest()
- private fun getAssets() {
- viewModelScope.launch {
- withContext(Dispatchers.Main) {
- showLoading()
- val result = withContext(Dispatchers.IO) { repo.getAssets(errorHandlerCallback) }
- assets.value = result
- hideLoading()
- }
- }
- }
- class RemoteRepoTest {
- suspend fun getAssets(errorHandler: Response.ResponseErrorHandler): List<AssetDto>? {
- return makeNetworkCall(
- call = {
- ApiClient.getMaintenanceService().getAssets()
- },
- errorHandler = errorHandler
- )
- }
- private suspend fun <T : Any> makeNetworkCall(
- call: suspend () -> Response<T>,
- errorHandler: Response.ResponseErrorHandler
- ): T? {
- val response = try {
- call.invoke()
- } catch (e: Exception) {
- e.printStackTrace()
- errorHandler.onResponseError(
- Response<Any>(
- data = null,
- message = e.localizedMessage,
- status = -1,
- ex = e
- )
- )
- return null
- }
- return if (response.isSuccess) {
- response.data
- } else {
- errorHandler.onResponseError(response)
- null
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement