Я хочу сделать две вещи: загрузить некоторые данные на сервер, а затем сохранить данные в локальной базе данных с возвращенным идентификатором с сервера. Каков наилучший способ сделать это с RxJava. Я устал делать что-то подобное, но я думаю, что это не лучшее решение из-за побочных эффектов в map и flatMap. Я использую Retrofit
для связи с сервером, ObjectBox
в качестве локальной базы данных и конечно RxJava2
private fun saveMyData(data: MyData) =
uploadToServer(data).flatMap {
saveToLocalRepository(it)
}
private fun uploadToServer(data: MyData): Single<MyData> =
dataApiService.uploadMyData(data).map { id: Long ->
data.copy(serverId = it)
}
private fun saveToLocalRepository(data: MyData): Single<MyData> =
localRepository.save(data).map{ id: Long ->
data.copy(id = it)
}