commonMain.ro.dragossusi.resource.flow.observer.DataResourceObserver.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.DataResource
import ro.dragossusi.resource.OnSuccessListener
import ro.dragossusi.resource.flow.extensions.onSuccess
class DataResourceObserver(
errorHandler: MessageDataHandler?,
setup: DataResourceObserver.() -> Unit
) : ResourceObserver>(errorHandler) {
private val onSuccessListeners = mutableListOf>()
fun onSuccess(listener: OnSuccessListener) {
onSuccessListeners += listener
}
override fun observe(flow: Flow>): Flow> {
return super.observe(flow).onSuccess {
onSuccess(it)
}
}
private fun onSuccess(data: T?) {
onSuccessListeners.forEach {
it.onSuccess(data)
}
}
init {
setup.invoke(this)
}
}