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 PMursus
03/23/2021, 9:02 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() }
}
}ursus
03/23/2021, 9:02 PMephemient
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())
}ursus
03/23/2021, 9:04 PM{ repository.syncDocuments() } .asFlow()
complains Suspension functions can be called only within coroutine bodyephemient
03/23/2021, 9:05 PMephemient
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 PMursus
03/23/2021, 9:45 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 extensionAdam 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