Guest User

Untitled

a guest
Aug 16th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.95 KB | None | 0 0
  1. public Observable<Dashboard> getDashboard(String phoneNum, boolean getNewData) {
  2. if (getNewData) invalidateDashboardCache();//just set dashboardCacheValid = false
  3. Observable<Dashboard> observableToCache = Observable.fromCallable(
  4. () -> {
  5. Dashboard cached = mCache.getDashboard(phoneNum);
  6. if (cached != null) {
  7. if (!cached.cacheValid()) {
  8. dashboardCacheValid = false;
  9. }
  10. return cached;
  11. }
  12. dashboardCacheValid = false;
  13. return Dashboard.EMPTY;
  14. })
  15. .concatMap(cachedDashboard -> Observable.concat(Observable.just(cachedDashboard),
  16. Observable.fromCallable(() -> !dashboardCacheValid)
  17. .filter(Boolean::booleanValue)
  18. .flatMap(cacheNotValid -> mNetworkHelper.getDashboardRaw(phoneNum))
  19. .doOnNext(dashboard -> {
  20. mCache.putDashboard(pnumber, dashboard);
  21. dashboardCacheValid = true;
  22. })));
  23. return cacheObservable(CACHE_PREFIX_GET_DASHBOARD + phoneNum, observableToCache); //this is for multiple calls
  24. }
  25.  
  26. public Observable<Dashboard> getDashboardNew(String phoneNum, boolean getNewData) {
  27. Dashboard fromCache = mCache.getDashboard(phoneNum, getNewData);
  28. dashboardCacheValid = fromCache.cacheValid();
  29. if (getNewData) invalidateDashboardCache();
  30. if (dashboardCacheValid) {
  31. return Observable.just(fromCache);
  32. } else {
  33. final Dashboard cached = fromCache;
  34. return mNetworkHelper.getDashboardRaw(phoneNum)
  35. .doOnNext(dashboard -> mCache.putDashboard(phoneNum, dashboard))
  36. .onErrorResumeNext(throwable -> {
  37. return Observable.concat(Observable.just(cached), Observable.error(throwable));
  38. });
  39. }
  40. }
Add Comment
Please, Sign In to add comment