BarInsta/app/src/main/java/awais/instagrabber/asyncs/FeedPostFetchService.java

75 lines
2.6 KiB
Java
Raw Normal View History

2020-10-17 10:07:03 +00:00
package awais.instagrabber.asyncs;
import java.util.ArrayList;
2020-10-17 10:07:03 +00:00
import java.util.List;
import awais.instagrabber.customviews.helpers.PostFetcher;
import awais.instagrabber.interfaces.FetchListener;
import awais.instagrabber.repositories.responses.Media;
import awais.instagrabber.repositories.responses.PostsFetchResponse;
import awais.instagrabber.utils.Constants;
import awais.instagrabber.utils.CookieUtils;
import awais.instagrabber.webservices.FeedService;
2020-10-17 10:07:03 +00:00
import awais.instagrabber.webservices.ServiceCallback;
import static awais.instagrabber.utils.Utils.settingsHelper;
2020-10-17 10:07:03 +00:00
public class FeedPostFetchService implements PostFetcher.PostFetchService {
private static final String TAG = "FeedPostFetchService";
private final FeedService feedService;
2020-10-17 10:07:03 +00:00
private String nextCursor;
private boolean hasNextPage;
public FeedPostFetchService() {
feedService = FeedService.getInstance();
2020-10-17 10:07:03 +00:00
}
@Override
public void fetch(final FetchListener<List<Media>> fetchListener) {
final List<Media> feedModels = new ArrayList<>();
final String cookie = settingsHelper.getString(Constants.COOKIE);
final String csrfToken = CookieUtils.getCsrfTokenFromCookie(cookie);
2021-01-11 20:08:23 +00:00
final String deviceUuid = settingsHelper.getString(Constants.DEVICE_UUID);
feedModels.clear();
2021-01-11 20:08:23 +00:00
feedService.fetch(csrfToken, deviceUuid, nextCursor, new ServiceCallback<PostsFetchResponse>() {
2020-10-17 10:07:03 +00:00
@Override
public void onSuccess(final PostsFetchResponse result) {
if (result == null && feedModels.size() > 0) {
fetchListener.onResult(feedModels);
return;
} else if (result == null) return;
2020-10-17 10:07:03 +00:00
nextCursor = result.getNextCursor();
2021-06-29 14:12:07 +00:00
hasNextPage = result.getHasNextPage();
final List<Media> mediaResults = result.getFeedModels();
feedModels.addAll(mediaResults);
2021-03-19 09:19:59 +00:00
2020-10-17 10:07:03 +00:00
if (fetchListener != null) {
// if (feedModels.size() < 15 && hasNextPage) {
// feedService.fetch(csrfToken, nextCursor, this);
// } else {
fetchListener.onResult(feedModels);
// }
2020-10-17 10:07:03 +00:00
}
}
@Override
public void onFailure(final Throwable t) {
if (fetchListener != null) {
fetchListener.onFailure(t);
}
}
});
}
@Override
2020-11-01 06:02:54 +00:00
public void reset() {
nextCursor = null;
2020-10-17 10:07:03 +00:00
}
@Override
public boolean hasNextPage() {
return hasNextPage;
}
}