ursus
03/23/2021, 8:57 PMflowOf {
someSuspendFunction()
}
am I missing something, or is it left to clients to create such extension
comming from rx, I have it mapped in by brain as such
Observable.just == flowOf(value)
Observable.fromCallable == flowOf { .. }
ephemient
03/23/2021, 8:59 PMflow { emit(someSuspendFunction()) }
ursus
03/23/2021, 9:00 PMfun <T> flowOf(action: suspend () -> T): Flow<T> {
return flow { emit(action()) }
}
but imports get messed up if I need something like this
foo
.flatMapLatest {
if (!it) {
flowOf(Uninitialized)
} else {
my.package.name.flowOf { repository.syncDocuments() }
}
}
ephemient
03/23/2021, 9:03 PMflowOf
and import both, but seems like a bad idea to me, due to overload resolutionursus
03/23/2021, 9:03 PM@FlowPreview
public fun <T> (suspend () -> T).asFlow(): Flow<T> = flow {
emit(invoke())
}
{ repository.syncDocuments() } .asFlow()
complains Suspension functions can be called only within coroutine body
ephemient
03/23/2021, 9:05 PMval lambda: suspend () -> Unit = { repository.syncDocuments() }
lambda.asFlow()
or repository::syncDocuments.asFlow()
ursus
03/23/2021, 9:06 PMephemient
03/23/2021, 9:07 PMursus
03/23/2021, 9:11 PMsuspend { repository.syncDocuments() }
.asFlow()
that suspend literal is news to meAdam Powell
03/23/2021, 11:51 PMsuspend fun
that returns a value insteadursus
03/23/2021, 11:53 PMobservable.switchMap { single.toObservable() }
the toObservable extension
Adam Powell
03/24/2021, 12:09 AMflow.mapLatest { mySuspendFun(it) }
?ursus
03/24/2021, 12:10 AMflowOf(suspend { ...})
I never knew of the syntax
a builder functionArslan Armanuly
03/24/2021, 11:49 AMfoo
.flatMapLatest {
flow {
if (!it) {
emit(Uninitialized)
} else {
emitAll(repository.syncDocuments())
}
}
}
Erik
03/24/2021, 8:37 PM