Ananiya
08/26/2021, 9:15 AMinvokeOnCompletionliveData {
    val mainJob = viewModelScope.launch {
           emit(Result.LOADING)
           repo.add(data)
          
    }
    mainJob.join()
    mainJob.invokeOnCompletion {
        viewModelScope.launch {
        if(it != null) emit(Result.FAILED(it) else emit(Result.SUCCESS(null)
        } 
     }
}liveData {
   val mainJob = viewModelScope.launch {
            emit(Result.LOADING)
            repo.add(data)
            emit(Result.SUCCESS(null)
           
     }
     mainJob.join()
}Nick Allen
08/26/2021, 5:38 PMliveDataemitliveDataliveData {
    coroutineScope {
    val mainJob = launch {
           emit(Result.LOADING)
           repo.add(data)
          
    }
    mainJob.join()
    mainJob.invokeOnCompletion {
        launch {
            if(it != null) emit(Result.FAILED(it)) else emit(Result.SUCCESS(null))
        } 
    }
    }
}Nick Allen
08/26/2021, 5:42 PMliveData {
    emit(Result.LOADING)
    try {
        repo.add(data)
        emit(Result.SUCCESS(null)
    } catch (t: Throwable) {
        emit(Result.FAILED(t)
        throw t
    }
}Ananiya
08/28/2021, 6:37 AM