kevin.cianfarini
04/21/2019, 6:25 PMfun <T : Any> Query<T>.asFlow(): Flow<Query<T>> = flow {
val channel = Channel<Unit>(CONFLATED)
val listener = object : Query.Listener {
override fun queryResultsChanged() {
channel.offer(Unit)
}
}
addListener(listener)
try {
emit(this@asFlow)
for (item in channel) {
emit(this@asFlow)
}
} finally {
removeListener(listener)
}
}
// why do we need the Channel?
fun <T : Any> Query.asFlow(): Flow<Query<T>> = flow {
val listener = object : Query.Listener {
override fun queryResultsChanges() {
emit(this@asFlow)
}
}
addListener(listener)
try {
emit(this@asFlow)
} finally {
removeListener(listener)
}
}
Dominaezzz
04/21/2019, 6:51 PM