All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.ro.dragossusi.resource.flow.observer.DataResourceObserver.kt Maven / Gradle / Ivy

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)
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy