I've been experimenting SQLDelight's new FlowExten...
# squarelibraries
y
I've been experimenting SQLDelight's new FlowExtensions in Kotlin/Native, and it turned out not working as
offer
is called directly inside frozen
Query.Listener
.
Copy code
fun <T : Any> Query<T>.asFlow(): Flow<Query<T>> = callbackFlow<Query<T>> {
    val listenerHolder = ThreadLocalRef<() -> Unit>()
    listenerHolder.value = { offer(this@asFlow) }
    val listener = object : Query.Listener {
        override fun queryResultsChanged() {
            listenerHolder.value?.invoke()
        }
    }
    addListener(listener)
    offer(this@asFlow)
    awaitClose {
        removeListener(listener)
    }
}.conflate()
wrapping offer call with ThreadLocalRef seems to be working, but I'm not sure if this is the way to go