2020-10-17 10:07:03 +00:00
|
|
|
package awais.instagrabber.asyncs;
|
|
|
|
|
2020-12-22 16:54:52 +00:00
|
|
|
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;
|
2021-01-07 12:36:33 +00:00
|
|
|
import awais.instagrabber.repositories.responses.Media;
|
2020-10-27 11:33:21 +00:00
|
|
|
import awais.instagrabber.repositories.responses.PostsFetchResponse;
|
2020-12-22 16:54:52 +00:00
|
|
|
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;
|
|
|
|
|
2020-12-22 16:54:52 +00:00
|
|
|
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";
|
2020-12-22 16:54:52 +00:00
|
|
|
private final FeedService feedService;
|
2020-10-17 10:07:03 +00:00
|
|
|
private String nextCursor;
|
|
|
|
private boolean hasNextPage;
|
|
|
|
|
|
|
|
public FeedPostFetchService() {
|
2020-12-22 16:54:52 +00:00
|
|
|
feedService = FeedService.getInstance();
|
2020-10-17 10:07:03 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2021-01-07 12:36:33 +00:00
|
|
|
public void fetch(final FetchListener<List<Media>> fetchListener) {
|
|
|
|
final List<Media> feedModels = new ArrayList<>();
|
2020-12-22 16:54:52 +00:00
|
|
|
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);
|
2020-12-22 16:54:52 +00:00
|
|
|
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
|
2020-10-27 11:33:21 +00:00
|
|
|
public void onSuccess(final PostsFetchResponse result) {
|
2020-12-22 16:54:52 +00:00
|
|
|
if (result == null && feedModels.size() > 0) {
|
|
|
|
fetchListener.onResult(feedModels);
|
|
|
|
return;
|
2021-01-07 12:36:33 +00:00
|
|
|
} else if (result == null) return;
|
2020-10-17 10:07:03 +00:00
|
|
|
nextCursor = result.getNextCursor();
|
|
|
|
hasNextPage = result.hasNextPage();
|
2021-03-18 07:03:38 +00:00
|
|
|
|
2021-03-19 11:26:44 +00:00
|
|
|
final List<Media> mediaResults = result.getFeedModels();
|
2021-03-22 00:11:35 +00:00
|
|
|
feedModels.addAll(mediaResults);
|
2021-03-19 09:19:59 +00:00
|
|
|
|
2020-10-17 10:07:03 +00:00
|
|
|
if (fetchListener != null) {
|
2021-01-09 11:24:16 +00:00
|
|
|
// 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;
|
|
|
|
}
|
|
|
|
}
|