Advertisement
Guest User

RxJava

a guest
Sep 25th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.44 KB | None | 0 0
  1. @Override public Observable<IWorkoutDetailsDataModel> getWorkoutDetails(int workoutId) {
  2. return userApi.getWorkoutCategories(token)
  3. .flatMap(response -> {
  4. if (!response.isSuccessful() || response.body() == null) {
  5. return Observable.just(categories);
  6. }
  7.  
  8. categories = response.body();
  9. return Observable.just(categories);
  10. })
  11. .flatMapIterable(categories -> categories)
  12. .flatMap(category -> userApi.getWorkouts(token, category.getId())
  13. .flatMap(response -> {
  14. if (!response.isSuccessful() || response.body() == null) {
  15. WorkoutDetailsDataModel dataModel = WorkoutDetailsDataModel.newInstance(null);
  16. return Observable.just(dataModel);
  17. }
  18.  
  19. List<Workout> workouts = response.body();
  20. cache.setWorkouts(workouts);
  21. if(cache.getWorkout(workoutId) != null) {
  22. return Observable.just(WorkoutDetailsDataModel.newInstance(cache.getWorkout(workoutId)));
  23. }
  24.  
  25. return Observable.fromIterable(cache.getWorkouts())
  26. .filter(item -> item.getId() == workoutId)
  27. .flatMap(result -> {
  28. DownloadWorkoutService.DownloadState workoutState = DownloadWorkoutService.isWorkoutDownloaded(result);
  29.  
  30. result.setDownloading(workoutState == DownloadWorkoutService.DownloadState
  31. .DOWNLOADING);
  32. result.setDownloaded(workoutState == DownloadWorkoutService.DownloadState
  33. .DOWNLOADED);
  34.  
  35. return Observable.just(WorkoutDetailsDataModel.newInstance(result));
  36. });
  37. })
  38. .onErrorResumeNext(throwable -> {
  39. WorkoutDetailsDataModel dataModel = WorkoutDetailsDataModel.newInstance(null);
  40. return Observable.just(dataModel);
  41. }));
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement