commonMain.ro.dragossusi.resource.flow.observer.CompletionResourceObserver.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of resource-flow-jvm Show documentation
Show all versions of resource-flow-jvm Show documentation
Android objects to observe loading completion and error
The newest version!
package ro.dragossusi.resource.flow.observer
import kotlinx.coroutines.flow.Flow
import ro.dragossusi.messagedata.handler.MessageDataHandler
import ro.dragossusi.resource.CompletionResource
import ro.dragossusi.resource.OnCompletedListener
import ro.dragossusi.resource.flow.extensions.onCompleted
class CompletionResourceObserver(
errorHandler: MessageDataHandler?,
setup: CompletionResourceObserver.() -> Unit
) : ResourceObserver(errorHandler) {
private val onCompletedListeners = mutableListOf()
fun onCompleted(listener: OnCompletedListener) {
onCompletedListeners += listener
}
private fun onCompleted() {
onCompletedListeners.forEach {
it.onCompleted()
}
}
override fun observe(flow: Flow): Flow {
return super.observe(flow).onCompleted {
onCompleted()
}
}
init {
setup.invoke(this)
}
}