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

commonMain.ro.dragossusi.resource.flow.observer.CompletionResourceObserver.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.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)
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy