package com.github.jetbrains.rssreader.core import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach fun interface Closeable { fun close() } class CFlow internal constructor(private val origin: Flow) : Flow by origin { fun watch(block: (T) -> Unit): Closeable { val job = Job() onEach { block(it) }.launchIn(CoroutineScope(Dispatchers.Main + job)) return Closeable { job.cancel() } } } internal fun Flow.wrap(): CFlow = CFlow(this)