Я вызываю retryNextTweet.onNext()
метод, но он не делает видимой повторной попытки.
Моя цель - получить следующий предмет из локального хранилища. Если в sqlite нет записей, я заполню локальное хранилище с помощью apiService и повторю попытку.
private val retryNextTweet: PublishSubject<Any> = PublishSubject.create()
override fun getNextTweet(cacheId: Long, tweetSearchParams: TweetSearchParams): Observable<Tweet> {
return tweetDao.getNextTweet(cacheId)
.toObservable()
.retryWhen {
it.flatMap { loadTweetsFromApi(tweetSearchParams).subscribe({
if(it.isNotEmpty())
retryNextTweet.onNext(Any())
}, {})
retryNextTweet }
}
}
@Dao
interface TweetDao {
@Query("SELECT * FROM tweet WHERE cacheId > :cacheId LIMIT 1")
fun getNextTweet(cacheId: Long): Single<Tweet>
}