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

78 lines
2.7 KiB
Java
Raw Normal View History

2020-11-02 13:00:07 +00:00
package awais.instagrabber.asyncs;
import java.util.List;
import awais.instagrabber.customviews.helpers.PostFetcher;
import awais.instagrabber.interfaces.FetchListener;
import awais.instagrabber.models.FeedModel;
import awais.instagrabber.models.enums.PostItemType;
2020-12-20 18:35:16 +00:00
import awais.instagrabber.repositories.responses.PostsFetchResponse;
import awais.instagrabber.webservices.GraphQLService;
2020-11-02 13:00:07 +00:00
import awais.instagrabber.webservices.ProfileService;
import awais.instagrabber.webservices.ServiceCallback;
public class SavedPostFetchService implements PostFetcher.PostFetchService {
private final ProfileService profileService;
2020-12-20 18:35:16 +00:00
private final GraphQLService graphQLService;
2020-11-02 13:00:07 +00:00
private final String profileId;
private final PostItemType type;
2020-12-20 18:35:16 +00:00
private final boolean isLoggedIn;
2020-11-02 13:00:07 +00:00
private String nextMaxId;
private boolean moreAvailable;
2020-12-20 18:35:16 +00:00
public SavedPostFetchService(final String profileId, final PostItemType type, final boolean isLoggedIn) {
2020-11-02 13:00:07 +00:00
this.profileId = profileId;
this.type = type;
2020-12-20 18:35:16 +00:00
this.isLoggedIn = isLoggedIn;
graphQLService = isLoggedIn ? null : GraphQLService.getInstance();
profileService = isLoggedIn ? ProfileService.getInstance() : null;
2020-11-02 13:00:07 +00:00
}
@Override
public void fetch(final FetchListener<List<FeedModel>> fetchListener) {
2020-12-20 18:35:16 +00:00
final ServiceCallback<PostsFetchResponse> callback = new ServiceCallback<PostsFetchResponse>() {
2020-11-02 13:00:07 +00:00
@Override
2020-12-20 18:35:16 +00:00
public void onSuccess(final PostsFetchResponse result) {
2020-11-02 13:00:07 +00:00
if (result == null) return;
2020-12-20 18:35:16 +00:00
nextMaxId = result.getNextCursor();
moreAvailable = result.hasNextPage();
2020-11-02 13:00:07 +00:00
if (fetchListener != null) {
2020-12-20 18:35:16 +00:00
fetchListener.onResult(result.getFeedModels());
2020-11-02 13:00:07 +00:00
}
}
@Override
public void onFailure(final Throwable t) {
// Log.e(TAG, "onFailure: ", t);
if (fetchListener != null) {
fetchListener.onFailure(t);
}
}
};
switch (type) {
case LIKED:
profileService.fetchLiked(nextMaxId, callback);
break;
case TAGGED:
2020-12-20 18:35:16 +00:00
if (isLoggedIn) profileService.fetchTagged(profileId, nextMaxId, callback);
else graphQLService.fetchTaggedPosts(profileId, 30, nextMaxId, callback);
2020-11-02 13:00:07 +00:00
break;
case SAVED:
default:
profileService.fetchSaved(nextMaxId, callback);
break;
}
}
@Override
public void reset() {
nextMaxId = null;
}
@Override
public boolean hasNextPage() {
return moreAvailable;
}
}