Created
April 25, 2021 10:25
-
-
Save varundwarkani/12a7fa36f98a0e52201d80890d999fbc to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class UpcomingMatchesDataSource extends PageKeyedDataSource<Integer, UpcomingMatch> { | |
private static final String LOGGER = UpcomingMatchesDataSource.class.getName(); | |
public static final int PAGE_SIZE = 5; | |
private static Integer PAGE_KEY = 0; | |
private UpcomingMatchesRepository upcomingMatchesRepository; | |
UpcomingMatchesDataSource(UpcomingMatchesRepository upcomingMatchesRepository) { | |
this.upcomingMatchesRepository = upcomingMatchesRepository; | |
} | |
@Override | |
public void loadInitial(@NonNull LoadInitialParams<Integer> params, @NonNull LoadInitialCallback<Integer, UpcomingMatch> callback) { | |
Log.d(LOGGER, "loading Initial"); | |
upcomingMatchesRepository.getUpcomingMatches(PAGE_KEY, PAGE_SIZE) | |
.subscribe(new Observer<UpcomingMatchesAPIResponse>() { | |
@Override | |
public void onSubscribe(@io.reactivex.annotations.NonNull Disposable d) { | |
Log.d(LOGGER, "onSubscribe of loadInitial"); | |
} | |
@Override | |
public void onNext(@io.reactivex.annotations.NonNull UpcomingMatchesAPIResponse upcomingMatchesAPIResponse) { | |
Log.d(LOGGER, "onNext of loadInitial - " + upcomingMatchesAPIResponse.getData().size()); | |
List<UpcomingMatch> upcomingMatches = processModelData(upcomingMatchesAPIResponse); | |
callback.onResult(upcomingMatches, null, PAGE_KEY + PAGE_SIZE); | |
} | |
@Override | |
public void onError(@io.reactivex.annotations.NonNull Throwable e) { | |
Log.d(LOGGER, "onError of loadInitial - " + e.getMessage()); | |
} | |
@Override | |
public void onComplete() { | |
Log.d(LOGGER, "onComplete of loadInitial"); | |
} | |
}); | |
} | |
@Override | |
public void loadBefore(@NonNull LoadParams<Integer> params, @NonNull LoadCallback<Integer, UpcomingMatch> callback) { | |
Log.d(LOGGER, "loading before"); | |
Integer newKey = (PAGE_KEY > 0) ? PAGE_KEY - PAGE_SIZE : null; | |
upcomingMatchesRepository.getUpcomingMatches(params.key, PAGE_SIZE) | |
.subscribe(new Observer<UpcomingMatchesAPIResponse>() { | |
@Override | |
public void onSubscribe(@io.reactivex.annotations.NonNull Disposable d) { | |
Log.d(LOGGER, "onSubscribe of loadBefore"); | |
} | |
@Override | |
public void onNext(@io.reactivex.annotations.NonNull UpcomingMatchesAPIResponse upcomingMatchesAPIResponse) { | |
Log.d(LOGGER, "onNext of loadBefore"); | |
List<UpcomingMatch> upcomingMatches = processModelData(upcomingMatchesAPIResponse); | |
callback.onResult(upcomingMatches, newKey); | |
} | |
@Override | |
public void onError(@io.reactivex.annotations.NonNull Throwable e) { | |
Log.d(LOGGER, "onError of loadBefore - " + e.getMessage()); | |
} | |
@Override | |
public void onComplete() { | |
Log.d(LOGGER, "onComplete of loadBefore"); | |
} | |
}); | |
} | |
@Override | |
public void loadAfter(@NonNull LoadParams<Integer> params, @NonNull LoadCallback<Integer, UpcomingMatch> callback) { | |
Log.d(LOGGER, "loading after"); | |
upcomingMatchesRepository.getUpcomingMatches(params.key, PAGE_SIZE) | |
.subscribe(new Observer<UpcomingMatchesAPIResponse>() { | |
@Override | |
public void onSubscribe(@io.reactivex.annotations.NonNull Disposable d) { | |
Log.d(LOGGER, "onSubscribe of loadAfter"); | |
} | |
@Override | |
public void onNext(@io.reactivex.annotations.NonNull UpcomingMatchesAPIResponse upcomingMatchesAPIResponse) { | |
Log.d(LOGGER, "onNext of loadAfter - " + upcomingMatchesAPIResponse.getData().size()); | |
List<UpcomingMatch> upcomingMatches = processModelData(upcomingMatchesAPIResponse); | |
Integer key = (upcomingMatchesAPIResponse.isHasmore()) ? PAGE_KEY + PAGE_SIZE : null; | |
callback.onResult(upcomingMatches, key); | |
} | |
@Override | |
public void onError(@io.reactivex.annotations.NonNull Throwable e) { | |
Log.d(LOGGER, "onError of loadAfter - " + e.getMessage()); | |
} | |
@Override | |
public void onComplete() { | |
Log.d(LOGGER, "onComplete of loadAfter"); | |
} | |
}); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment