Skip to content

Instantly share code, notes, and snippets.

View DarkAbhi's full-sized avatar
😎
🌎

Abhishek AN DarkAbhi

😎
🌎
View GitHub Profile
CoroutineScope(Dispatchers.Main).launch {
loadPost()
}
private suspend fun loadPost() {
viewModel.getPost().collect {
when (it) {
is State.Loading -> {
Timber.i("LOADING")
}
@ExperimentalCoroutinesApi
class PostViewModel(private val repo: PostRepository) : ViewModel() {
fun getPost() = repo.getPostData()
}
@ExperimentalCoroutinesApi
class PostRepository {
fun getPostData(): Flow<State<PostModel>> = callbackFlow {
offer(State.Loading())
val postDocument = Firebase.firestore
.collection(AppConfig.POSTS_COLLECTION)
.document("post1")
val subscription = postDocument.addSnapshotListener { snapshot, exception ->
exception?.let {
@DarkAbhi
DarkAbhi / State.kt
Last active February 16, 2021 14:42
sealed class State<out T> {
class Loading<out T> : State<T>()
data class Success<out T>(val data: T) : State<T>()
data class Failed<out T>(val message: String) : State<T>()
}