Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Override public Observable<IWorkoutDetailsDataModel> getWorkoutDetails(int workoutId) {
- return userApi.getWorkoutCategories(token)
- .flatMap(response -> {
- if (!response.isSuccessful() || response.body() == null) {
- return Observable.just(categories);
- }
- categories = response.body();
- return Observable.just(categories);
- })
- .flatMapIterable(categories -> categories)
- .flatMap(category -> userApi.getWorkouts(token, category.getId())
- .flatMap(response -> {
- if (!response.isSuccessful() || response.body() == null) {
- WorkoutDetailsDataModel dataModel = WorkoutDetailsDataModel.newInstance(null);
- return Observable.just(dataModel);
- }
- List<Workout> workouts = response.body();
- cache.setWorkouts(workouts);
- if(cache.getWorkout(workoutId) != null) {
- return Observable.just(WorkoutDetailsDataModel.newInstance(cache.getWorkout(workoutId)));
- }
- return Observable.fromIterable(cache.getWorkouts())
- .filter(item -> item.getId() == workoutId)
- .flatMap(result -> {
- DownloadWorkoutService.DownloadState workoutState = DownloadWorkoutService.isWorkoutDownloaded(result);
- result.setDownloading(workoutState == DownloadWorkoutService.DownloadState
- .DOWNLOADING);
- result.setDownloaded(workoutState == DownloadWorkoutService.DownloadState
- .DOWNLOADED);
- return Observable.just(WorkoutDetailsDataModel.newInstance(result));
- });
- })
- .onErrorResumeNext(throwable -> {
- WorkoutDetailsDataModel dataModel = WorkoutDetailsDataModel.newInstance(null);
- return Observable.just(dataModel);
- }));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement