Skip to content

Instantly share code, notes, and snippets.

@psteiger
Last active September 5, 2019 15:51
Show Gist options
  • Select an option

  • Save psteiger/bda468edf138e35a2fa1217289d42c25 to your computer and use it in GitHub Desktop.

Select an option

Save psteiger/bda468edf138e35a2fa1217289d42c25 to your computer and use it in GitHub Desktop.
open class FirebaseResourceLiveData(ref: DatabaseReference) : LiveData<Resource<DataSnapshot>> {
init {
value = Resource.Loading() // setValue() of LiveData
}
private val listener = MyValueEventListener()
override fun onActive() { // we have observers!
value = Resource.Loading(value?.extractData)
query.addValueEventListener(listener)
}
override fun onInactive() { // no observers
query.removeEventListener(listener)
}
private inner class MyValueEventListener : ValueEventListener {
override fun onDataChange(dataSnapshot: DataSnapshot) {
value = Resource.Success(dataSnapshot)
}
override fun onCancelled(databaseError: DatabaseError) {
val e = databaseError.toException()
value = Resource.Failure(e)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment