The difficulty is that I get the number wrapped in a flow.
Implementation of UserWithNumber
data class UserWithNumber(val user: User, val number: Int)
Implementation of users functions:
fun getUsers(): Flow<List<User>> {
//return users
}
fun getNumberForUser(userId: Long): Flow<Int> {
//return number
}
fun getUsersWithNumber(): Flow<List<UserWithNumber>> {
return getUsers()
//TODO transform every User to UserWithNumber
}
in RxJava i can easily achieve that with flatMapIterable and toList().
fun getUsersWithNumber(): Observable<List<UserWithNumber>> {
return getUsers() // return Observable<List<User>>
.flatMapIterable { it } // unfolds list in Observable<User>
.flatMap { it.getNumberForUser(it.id) } // make transform function to every user
.toList() // wrap to list
}
How to do that with kotlin coroutines?