Почему бы не создать LiveData для управления состоянием результатов вашей работы?
Создать класс для хранения результата работы почему запечатанный класс?
sealed class ResultState{
object Success: ResultState() // this is object because I added no params
data class Failure(val message: String): ResultState()
}
Создание LiveData для отчета об этом результате
val stateLiveData = MutableLiveData<ResultState>()
Сделать insertToDatabase()
вернуть результат
suspend fun insertToDatabase(input: String): ResultState {
return withContext<ResultState>(Dispatchers.IO) {
val dataList =
ExternalApi.retrofitCall.getData(string).await()
if (dataList.intialDataResult < 1) {
return@withContext ResultState.Failure("Reason of error...")
} else {
database.myDataBase.insertAll(dataList)
return@withContext ResultState.Success
}
}
}
Теперь, сообщить результат в пользовательский интерфейс
fun onSearchButtonClicked(input: String) {
coroutineScope.launch {
val resultState = repo.insertToDatabase(input)
stateLiveData.value = resultState
}
}
В пользовательском интерфейсе
viewModel.stateLiveData.observe(viewLifeCycleOwner, Observer { state ->
when (state) {
is ResultState.Success -> { /* show success in UI */ }
is ResultState.Failure -> { /* show error in UI with state.message variable */ }
}
})
Аналогично, вы можете добавить ResultState.PROGRESS
, чтобы показать, что задача выполняется в пользовательском интерфейсе.
Если у вас есть какие-либо запросы, добавьте комментарий.