mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2025-04-20 22:18:47 +02:00
Probably fix duplicate posts issues. Move classes related to Post to Package Post.
This commit is contained in:
parent
ac10441d54
commit
c52cf467ac
@ -64,14 +64,14 @@ import ml.docilealligator.infinityforreddit.Event.PostUpdateEventToDetailActivit
|
|||||||
import ml.docilealligator.infinityforreddit.Event.PostUpdateEventToPostList;
|
import ml.docilealligator.infinityforreddit.Event.PostUpdateEventToPostList;
|
||||||
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
||||||
import ml.docilealligator.infinityforreddit.FetchComment;
|
import ml.docilealligator.infinityforreddit.FetchComment;
|
||||||
import ml.docilealligator.infinityforreddit.FetchPost;
|
import ml.docilealligator.infinityforreddit.Post.FetchPost;
|
||||||
import ml.docilealligator.infinityforreddit.Flair;
|
import ml.docilealligator.infinityforreddit.Flair;
|
||||||
import ml.docilealligator.infinityforreddit.Fragment.FlairBottomSheetFragment;
|
import ml.docilealligator.infinityforreddit.Fragment.FlairBottomSheetFragment;
|
||||||
import ml.docilealligator.infinityforreddit.Fragment.PostCommentSortTypeBottomSheetFragment;
|
import ml.docilealligator.infinityforreddit.Fragment.PostCommentSortTypeBottomSheetFragment;
|
||||||
import ml.docilealligator.infinityforreddit.HidePost;
|
import ml.docilealligator.infinityforreddit.Post.HidePost;
|
||||||
import ml.docilealligator.infinityforreddit.Infinity;
|
import ml.docilealligator.infinityforreddit.Infinity;
|
||||||
import ml.docilealligator.infinityforreddit.ParseComment;
|
import ml.docilealligator.infinityforreddit.ParseComment;
|
||||||
import ml.docilealligator.infinityforreddit.ParsePost;
|
import ml.docilealligator.infinityforreddit.Post.ParsePost;
|
||||||
import ml.docilealligator.infinityforreddit.Post.Post;
|
import ml.docilealligator.infinityforreddit.Post.Post;
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
import ml.docilealligator.infinityforreddit.ReadMessage;
|
import ml.docilealligator.infinityforreddit.ReadMessage;
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
package ml.docilealligator.infinityforreddit;
|
package ml.docilealligator.infinityforreddit.Post;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
import ml.docilealligator.infinityforreddit.Post.Post;
|
import ml.docilealligator.infinityforreddit.RedditAPI;
|
||||||
import ml.docilealligator.infinityforreddit.Utils.RedditUtils;
|
import ml.docilealligator.infinityforreddit.Utils.RedditUtils;
|
||||||
import retrofit2.Call;
|
import retrofit2.Call;
|
||||||
import retrofit2.Callback;
|
import retrofit2.Callback;
|
@ -1,10 +1,11 @@
|
|||||||
package ml.docilealligator.infinityforreddit;
|
package ml.docilealligator.infinityforreddit.Post;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import ml.docilealligator.infinityforreddit.RedditAPI;
|
||||||
import ml.docilealligator.infinityforreddit.Utils.RedditUtils;
|
import ml.docilealligator.infinityforreddit.Utils.RedditUtils;
|
||||||
import retrofit2.Call;
|
import retrofit2.Call;
|
||||||
import retrofit2.Callback;
|
import retrofit2.Callback;
|
@ -1,4 +1,4 @@
|
|||||||
package ml.docilealligator.infinityforreddit;
|
package ml.docilealligator.infinityforreddit.Post;
|
||||||
|
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.text.Html;
|
import android.text.Html;
|
||||||
@ -8,12 +8,11 @@ import org.json.JSONException;
|
|||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
|
import java.util.LinkedHashSet;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
import ml.docilealligator.infinityforreddit.Fragment.PostFragment;
|
import ml.docilealligator.infinityforreddit.Fragment.PostFragment;
|
||||||
import ml.docilealligator.infinityforreddit.Post.Post;
|
|
||||||
import ml.docilealligator.infinityforreddit.Utils.JSONUtils;
|
import ml.docilealligator.infinityforreddit.Utils.JSONUtils;
|
||||||
import ml.docilealligator.infinityforreddit.Utils.Utils;
|
import ml.docilealligator.infinityforreddit.Utils.Utils;
|
||||||
|
|
||||||
@ -357,7 +356,7 @@ public class ParsePost {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public interface ParsePostsListingListener {
|
public interface ParsePostsListingListener {
|
||||||
void onParsePostsListingSuccess(ArrayList<Post> newPostData, String lastItem);
|
void onParsePostsListingSuccess(LinkedHashSet<Post> newPostData, String lastItem);
|
||||||
|
|
||||||
void onParsePostsListingFail();
|
void onParsePostsListingFail();
|
||||||
}
|
}
|
||||||
@ -376,7 +375,7 @@ public class ParsePost {
|
|||||||
private boolean nsfw;
|
private boolean nsfw;
|
||||||
private ParsePostsListingListener parsePostsListingListener;
|
private ParsePostsListingListener parsePostsListingListener;
|
||||||
private ParsePostListener parsePostListener;
|
private ParsePostListener parsePostListener;
|
||||||
private ArrayList<Post> newPosts;
|
private LinkedHashSet<Post> newPosts;
|
||||||
private Post post;
|
private Post post;
|
||||||
private String lastItem;
|
private String lastItem;
|
||||||
private boolean parseFailed;
|
private boolean parseFailed;
|
||||||
@ -392,7 +391,7 @@ public class ParsePost {
|
|||||||
this.nPosts = nPosts;
|
this.nPosts = nPosts;
|
||||||
this.filter = filter;
|
this.filter = filter;
|
||||||
this.nsfw = nsfw;
|
this.nsfw = nsfw;
|
||||||
newPosts = new ArrayList<>();
|
newPosts = new LinkedHashSet<>();
|
||||||
parseFailed = false;
|
parseFailed = false;
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
@ -3,6 +3,8 @@ package ml.docilealligator.infinityforreddit.Post;
|
|||||||
import android.os.Parcel;
|
import android.os.Parcel;
|
||||||
import android.os.Parcelable;
|
import android.os.Parcelable;
|
||||||
|
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
import ml.docilealligator.infinityforreddit.Utils.RedditUtils;
|
import ml.docilealligator.infinityforreddit.Utils.RedditUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -506,4 +508,12 @@ public class Post implements Parcelable {
|
|||||||
parcel.writeByte((byte) (isCrosspost ? 1 : 0));
|
parcel.writeByte((byte) (isCrosspost ? 1 : 0));
|
||||||
parcel.writeString(crosspostParentId);
|
parcel.writeString(crosspostParentId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(@Nullable Object obj) {
|
||||||
|
if (!(obj instanceof Post)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return ((Post) obj).getFullName().equals(fullName);
|
||||||
|
}
|
||||||
}
|
}
|
@ -5,10 +5,11 @@ import androidx.lifecycle.MutableLiveData;
|
|||||||
import androidx.paging.PageKeyedDataSource;
|
import androidx.paging.PageKeyedDataSource;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.LinkedHashSet;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
import ml.docilealligator.infinityforreddit.NetworkState;
|
import ml.docilealligator.infinityforreddit.NetworkState;
|
||||||
import ml.docilealligator.infinityforreddit.ParsePost;
|
|
||||||
import ml.docilealligator.infinityforreddit.RedditAPI;
|
import ml.docilealligator.infinityforreddit.RedditAPI;
|
||||||
import ml.docilealligator.infinityforreddit.SortType;
|
import ml.docilealligator.infinityforreddit.SortType;
|
||||||
import ml.docilealligator.infinityforreddit.Utils.RedditUtils;
|
import ml.docilealligator.infinityforreddit.Utils.RedditUtils;
|
||||||
@ -42,6 +43,7 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
private int filter;
|
private int filter;
|
||||||
private String userWhere;
|
private String userWhere;
|
||||||
private String multiRedditPath;
|
private String multiRedditPath;
|
||||||
|
private LinkedHashSet<Post> postLinkedHashSet;
|
||||||
|
|
||||||
private MutableLiveData<NetworkState> paginationNetworkStateLiveData;
|
private MutableLiveData<NetworkState> paginationNetworkStateLiveData;
|
||||||
private MutableLiveData<NetworkState> initialLoadStateLiveData;
|
private MutableLiveData<NetworkState> initialLoadStateLiveData;
|
||||||
@ -62,6 +64,7 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
this.sortType = sortType == null ? new SortType(SortType.Type.BEST) : sortType;
|
this.sortType = sortType == null ? new SortType(SortType.Type.BEST) : sortType;
|
||||||
this.filter = filter;
|
this.filter = filter;
|
||||||
this.nsfw = nsfw;
|
this.nsfw = nsfw;
|
||||||
|
postLinkedHashSet = new LinkedHashSet<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
PostDataSource(Retrofit retrofit, String accessToken, Locale locale, String path, int postType,
|
PostDataSource(Retrofit retrofit, String accessToken, Locale locale, String path, int postType,
|
||||||
@ -97,6 +100,7 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
}
|
}
|
||||||
this.filter = filter;
|
this.filter = filter;
|
||||||
this.nsfw = nsfw;
|
this.nsfw = nsfw;
|
||||||
|
postLinkedHashSet = new LinkedHashSet<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
PostDataSource(Retrofit retrofit, String accessToken, Locale locale, String subredditOrUserName, int postType,
|
PostDataSource(Retrofit retrofit, String accessToken, Locale locale, String subredditOrUserName, int postType,
|
||||||
@ -113,6 +117,7 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
userWhere = where;
|
userWhere = where;
|
||||||
this.filter = filter;
|
this.filter = filter;
|
||||||
this.nsfw = nsfw;
|
this.nsfw = nsfw;
|
||||||
|
postLinkedHashSet = new LinkedHashSet<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
PostDataSource(Retrofit retrofit, String accessToken, Locale locale, String subredditOrUserName, String query,
|
PostDataSource(Retrofit retrofit, String accessToken, Locale locale, String subredditOrUserName, String query,
|
||||||
@ -129,6 +134,7 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
this.sortType = sortType == null ? new SortType(SortType.Type.RELEVANCE) : sortType;
|
this.sortType = sortType == null ? new SortType(SortType.Type.RELEVANCE) : sortType;
|
||||||
this.filter = filter;
|
this.filter = filter;
|
||||||
this.nsfw = nsfw;
|
this.nsfw = nsfw;
|
||||||
|
postLinkedHashSet = new LinkedHashSet<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
MutableLiveData<NetworkState> getPaginationNetworkStateLiveData() {
|
MutableLiveData<NetworkState> getPaginationNetworkStateLiveData() {
|
||||||
@ -234,7 +240,7 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
ParsePost.parsePosts(response.body(), locale, -1, filter, nsfw,
|
ParsePost.parsePosts(response.body(), locale, -1, filter, nsfw,
|
||||||
new ParsePost.ParsePostsListingListener() {
|
new ParsePost.ParsePostsListingListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onParsePostsListingSuccess(ArrayList<Post> newPosts, String lastItem) {
|
public void onParsePostsListingSuccess(LinkedHashSet<Post> newPosts, String lastItem) {
|
||||||
String nextPageKey;
|
String nextPageKey;
|
||||||
if (lastItem == null || lastItem.equals("") || lastItem.equals("null")) {
|
if (lastItem == null || lastItem.equals("") || lastItem.equals("null")) {
|
||||||
nextPageKey = null;
|
nextPageKey = null;
|
||||||
@ -242,14 +248,17 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
nextPageKey = lastItem;
|
nextPageKey = lastItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int currentPostsSize = postLinkedHashSet.size();
|
||||||
if (newPosts.size() != 0) {
|
if (newPosts.size() != 0) {
|
||||||
callback.onResult(newPosts, null, nextPageKey);
|
postLinkedHashSet.addAll(newPosts);
|
||||||
|
callback.onResult(new ArrayList<>(newPosts), null, nextPageKey);
|
||||||
hasPostLiveData.postValue(true);
|
hasPostLiveData.postValue(true);
|
||||||
} else if (nextPageKey != null) {
|
} else if (nextPageKey != null) {
|
||||||
loadBestPostsInitial(callback, nextPageKey);
|
loadBestPostsInitial(callback, nextPageKey);
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
callback.onResult(newPosts, null, nextPageKey);
|
postLinkedHashSet.addAll(newPosts);
|
||||||
|
callback.onResult(new ArrayList<>(newPosts), null, nextPageKey);
|
||||||
hasPostLiveData.postValue(false);
|
hasPostLiveData.postValue(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -296,11 +305,18 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
ParsePost.parsePosts(response.body(), locale, -1, filter, nsfw,
|
ParsePost.parsePosts(response.body(), locale, -1, filter, nsfw,
|
||||||
new ParsePost.ParsePostsListingListener() {
|
new ParsePost.ParsePostsListingListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onParsePostsListingSuccess(ArrayList<Post> newPosts, String lastItem) {
|
public void onParsePostsListingSuccess(LinkedHashSet<Post> newPosts, String lastItem) {
|
||||||
if (newPosts.size() == 0 && lastItem != null && !lastItem.equals("") && !lastItem.equals("null")) {
|
if (newPosts.size() == 0 && lastItem != null && !lastItem.equals("") && !lastItem.equals("null")) {
|
||||||
loadBestPostsAfter(params, callback, lastItem);
|
loadBestPostsAfter(params, callback, lastItem);
|
||||||
} else {
|
} else {
|
||||||
callback.onResult(newPosts, lastItem);
|
int currentPostsSize = postLinkedHashSet.size();
|
||||||
|
postLinkedHashSet.addAll(newPosts);
|
||||||
|
if (currentPostsSize == postLinkedHashSet.size()) {
|
||||||
|
callback.onResult(new ArrayList<>(), lastItem);
|
||||||
|
} else {
|
||||||
|
List<Post> newPostsList = new ArrayList<>(postLinkedHashSet).subList(currentPostsSize, postLinkedHashSet.size());
|
||||||
|
callback.onResult(newPostsList, lastItem);
|
||||||
|
}
|
||||||
paginationNetworkStateLiveData.postValue(NetworkState.LOADED);
|
paginationNetworkStateLiveData.postValue(NetworkState.LOADED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -366,7 +382,7 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
ParsePost.parsePosts(response.body(), locale, -1, filter, nsfw,
|
ParsePost.parsePosts(response.body(), locale, -1, filter, nsfw,
|
||||||
new ParsePost.ParsePostsListingListener() {
|
new ParsePost.ParsePostsListingListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onParsePostsListingSuccess(ArrayList<Post> newPosts, String lastItem) {
|
public void onParsePostsListingSuccess(LinkedHashSet<Post> newPosts, String lastItem) {
|
||||||
String nextPageKey;
|
String nextPageKey;
|
||||||
if (lastItem == null || lastItem.equals("") || lastItem.equals("null")) {
|
if (lastItem == null || lastItem.equals("") || lastItem.equals("null")) {
|
||||||
nextPageKey = null;
|
nextPageKey = null;
|
||||||
@ -375,13 +391,15 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (newPosts.size() != 0) {
|
if (newPosts.size() != 0) {
|
||||||
callback.onResult(newPosts, null, nextPageKey);
|
postLinkedHashSet.addAll(newPosts);
|
||||||
|
callback.onResult(new ArrayList<>(newPosts), null, nextPageKey);
|
||||||
hasPostLiveData.postValue(true);
|
hasPostLiveData.postValue(true);
|
||||||
} else if (nextPageKey != null) {
|
} else if (nextPageKey != null) {
|
||||||
loadSubredditPostsInitial(callback, nextPageKey);
|
loadSubredditPostsInitial(callback, nextPageKey);
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
callback.onResult(newPosts, null, nextPageKey);
|
postLinkedHashSet.addAll(newPosts);
|
||||||
|
callback.onResult(new ArrayList<>(newPosts), null, nextPageKey);
|
||||||
hasPostLiveData.postValue(false);
|
hasPostLiveData.postValue(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -439,11 +457,18 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
ParsePost.parsePosts(response.body(), locale, -1, filter, nsfw,
|
ParsePost.parsePosts(response.body(), locale, -1, filter, nsfw,
|
||||||
new ParsePost.ParsePostsListingListener() {
|
new ParsePost.ParsePostsListingListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onParsePostsListingSuccess(ArrayList<Post> newPosts, String lastItem) {
|
public void onParsePostsListingSuccess(LinkedHashSet<Post> newPosts, String lastItem) {
|
||||||
if (newPosts.size() == 0 && lastItem != null && !lastItem.equals("") && !lastItem.equals("null")) {
|
if (newPosts.size() == 0 && lastItem != null && !lastItem.equals("") && !lastItem.equals("null")) {
|
||||||
loadSubredditPostsAfter(params, callback, lastItem);
|
loadSubredditPostsAfter(params, callback, lastItem);
|
||||||
} else {
|
} else {
|
||||||
callback.onResult(newPosts, lastItem);
|
int currentPostsSize = postLinkedHashSet.size();
|
||||||
|
postLinkedHashSet.addAll(newPosts);
|
||||||
|
if (currentPostsSize == postLinkedHashSet.size()) {
|
||||||
|
callback.onResult(new ArrayList<>(), lastItem);
|
||||||
|
} else {
|
||||||
|
List<Post> newPostsList = new ArrayList<>(postLinkedHashSet).subList(currentPostsSize, postLinkedHashSet.size());
|
||||||
|
callback.onResult(newPostsList, lastItem);
|
||||||
|
}
|
||||||
paginationNetworkStateLiveData.postValue(NetworkState.LOADED);
|
paginationNetworkStateLiveData.postValue(NetworkState.LOADED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -493,7 +518,7 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
ParsePost.parsePosts(response.body(), locale, -1, filter, nsfw,
|
ParsePost.parsePosts(response.body(), locale, -1, filter, nsfw,
|
||||||
new ParsePost.ParsePostsListingListener() {
|
new ParsePost.ParsePostsListingListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onParsePostsListingSuccess(ArrayList<Post> newPosts, String lastItem) {
|
public void onParsePostsListingSuccess(LinkedHashSet<Post> newPosts, String lastItem) {
|
||||||
String nextPageKey;
|
String nextPageKey;
|
||||||
if (lastItem == null || lastItem.equals("") || lastItem.equals("null")) {
|
if (lastItem == null || lastItem.equals("") || lastItem.equals("null")) {
|
||||||
nextPageKey = null;
|
nextPageKey = null;
|
||||||
@ -502,13 +527,15 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (newPosts.size() != 0) {
|
if (newPosts.size() != 0) {
|
||||||
callback.onResult(newPosts, null, nextPageKey);
|
postLinkedHashSet.addAll(newPosts);
|
||||||
|
callback.onResult(new ArrayList<>(newPosts), null, nextPageKey);
|
||||||
hasPostLiveData.postValue(true);
|
hasPostLiveData.postValue(true);
|
||||||
} else if (nextPageKey != null) {
|
} else if (nextPageKey != null) {
|
||||||
loadUserPostsInitial(callback, nextPageKey);
|
loadUserPostsInitial(callback, nextPageKey);
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
callback.onResult(newPosts, null, nextPageKey);
|
postLinkedHashSet.addAll(newPosts);
|
||||||
|
callback.onResult(new ArrayList<>(newPosts), null, nextPageKey);
|
||||||
hasPostLiveData.postValue(false);
|
hasPostLiveData.postValue(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -562,11 +589,18 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
ParsePost.parsePosts(response.body(), locale, -1, filter, nsfw,
|
ParsePost.parsePosts(response.body(), locale, -1, filter, nsfw,
|
||||||
new ParsePost.ParsePostsListingListener() {
|
new ParsePost.ParsePostsListingListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onParsePostsListingSuccess(ArrayList<Post> newPosts, String lastItem) {
|
public void onParsePostsListingSuccess(LinkedHashSet<Post> newPosts, String lastItem) {
|
||||||
if (newPosts.size() == 0 && lastItem != null && !lastItem.equals("") && !lastItem.equals("null")) {
|
if (newPosts.size() == 0 && lastItem != null && !lastItem.equals("") && !lastItem.equals("null")) {
|
||||||
loadUserPostsAfter(params, callback, lastItem);
|
loadUserPostsAfter(params, callback, lastItem);
|
||||||
} else {
|
} else {
|
||||||
callback.onResult(newPosts, lastItem);
|
int currentPostsSize = postLinkedHashSet.size();
|
||||||
|
postLinkedHashSet.addAll(newPosts);
|
||||||
|
if (currentPostsSize == postLinkedHashSet.size()) {
|
||||||
|
callback.onResult(new ArrayList<>(), lastItem);
|
||||||
|
} else {
|
||||||
|
List<Post> newPostsList = new ArrayList<>(postLinkedHashSet).subList(currentPostsSize, postLinkedHashSet.size());
|
||||||
|
callback.onResult(newPostsList, lastItem);
|
||||||
|
}
|
||||||
paginationNetworkStateLiveData.postValue(NetworkState.LOADED);
|
paginationNetworkStateLiveData.postValue(NetworkState.LOADED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -638,7 +672,7 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
ParsePost.parsePosts(response.body(), locale, -1, filter, nsfw,
|
ParsePost.parsePosts(response.body(), locale, -1, filter, nsfw,
|
||||||
new ParsePost.ParsePostsListingListener() {
|
new ParsePost.ParsePostsListingListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onParsePostsListingSuccess(ArrayList<Post> newPosts, String lastItem) {
|
public void onParsePostsListingSuccess(LinkedHashSet<Post> newPosts, String lastItem) {
|
||||||
String nextPageKey;
|
String nextPageKey;
|
||||||
if (lastItem == null || lastItem.equals("") || lastItem.equals("null")) {
|
if (lastItem == null || lastItem.equals("") || lastItem.equals("null")) {
|
||||||
nextPageKey = null;
|
nextPageKey = null;
|
||||||
@ -647,13 +681,15 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (newPosts.size() != 0) {
|
if (newPosts.size() != 0) {
|
||||||
callback.onResult(newPosts, null, nextPageKey);
|
postLinkedHashSet.addAll(newPosts);
|
||||||
|
callback.onResult(new ArrayList<>(newPosts), null, nextPageKey);
|
||||||
hasPostLiveData.postValue(true);
|
hasPostLiveData.postValue(true);
|
||||||
} else if (nextPageKey != null) {
|
} else if (nextPageKey != null) {
|
||||||
loadSearchPostsInitial(callback, nextPageKey);
|
loadSearchPostsInitial(callback, nextPageKey);
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
callback.onResult(newPosts, null, nextPageKey);
|
postLinkedHashSet.addAll(newPosts);
|
||||||
|
callback.onResult(new ArrayList<>(newPosts), null, nextPageKey);
|
||||||
hasPostLiveData.postValue(false);
|
hasPostLiveData.postValue(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -727,11 +763,18 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
ParsePost.parsePosts(response.body(), locale, -1, filter, nsfw,
|
ParsePost.parsePosts(response.body(), locale, -1, filter, nsfw,
|
||||||
new ParsePost.ParsePostsListingListener() {
|
new ParsePost.ParsePostsListingListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onParsePostsListingSuccess(ArrayList<Post> newPosts, String lastItem) {
|
public void onParsePostsListingSuccess(LinkedHashSet<Post> newPosts, String lastItem) {
|
||||||
if (newPosts.size() == 0 && lastItem != null && !lastItem.equals("") && !lastItem.equals("null")) {
|
if (newPosts.size() == 0 && lastItem != null && !lastItem.equals("") && !lastItem.equals("null")) {
|
||||||
loadSearchPostsAfter(params, callback, lastItem);
|
loadSearchPostsAfter(params, callback, lastItem);
|
||||||
} else {
|
} else {
|
||||||
callback.onResult(newPosts, lastItem);
|
int currentPostsSize = postLinkedHashSet.size();
|
||||||
|
postLinkedHashSet.addAll(newPosts);
|
||||||
|
if (currentPostsSize == postLinkedHashSet.size()) {
|
||||||
|
callback.onResult(new ArrayList<>(), lastItem);
|
||||||
|
} else {
|
||||||
|
List<Post> newPostsList = new ArrayList<>(postLinkedHashSet).subList(currentPostsSize, postLinkedHashSet.size());
|
||||||
|
callback.onResult(newPostsList, lastItem);
|
||||||
|
}
|
||||||
paginationNetworkStateLiveData.postValue(NetworkState.LOADED);
|
paginationNetworkStateLiveData.postValue(NetworkState.LOADED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -780,7 +823,7 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
ParsePost.parsePosts(response.body(), locale, -1, filter, nsfw,
|
ParsePost.parsePosts(response.body(), locale, -1, filter, nsfw,
|
||||||
new ParsePost.ParsePostsListingListener() {
|
new ParsePost.ParsePostsListingListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onParsePostsListingSuccess(ArrayList<Post> newPosts, String lastItem) {
|
public void onParsePostsListingSuccess(LinkedHashSet<Post> newPosts, String lastItem) {
|
||||||
String nextPageKey;
|
String nextPageKey;
|
||||||
if (lastItem == null || lastItem.equals("") || lastItem.equals("null")) {
|
if (lastItem == null || lastItem.equals("") || lastItem.equals("null")) {
|
||||||
nextPageKey = null;
|
nextPageKey = null;
|
||||||
@ -789,13 +832,15 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (newPosts.size() != 0) {
|
if (newPosts.size() != 0) {
|
||||||
callback.onResult(newPosts, null, nextPageKey);
|
postLinkedHashSet.addAll(newPosts);
|
||||||
|
callback.onResult(new ArrayList<>(newPosts), null, nextPageKey);
|
||||||
hasPostLiveData.postValue(true);
|
hasPostLiveData.postValue(true);
|
||||||
} else if (nextPageKey != null) {
|
} else if (nextPageKey != null) {
|
||||||
loadMultiRedditPostsInitial(callback, nextPageKey);
|
loadMultiRedditPostsInitial(callback, nextPageKey);
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
callback.onResult(newPosts, null, nextPageKey);
|
postLinkedHashSet.addAll(newPosts);
|
||||||
|
callback.onResult(new ArrayList<>(newPosts), null, nextPageKey);
|
||||||
hasPostLiveData.postValue(false);
|
hasPostLiveData.postValue(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -849,11 +894,18 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
ParsePost.parsePosts(response.body(), locale, -1, filter, nsfw,
|
ParsePost.parsePosts(response.body(), locale, -1, filter, nsfw,
|
||||||
new ParsePost.ParsePostsListingListener() {
|
new ParsePost.ParsePostsListingListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onParsePostsListingSuccess(ArrayList<Post> newPosts, String lastItem) {
|
public void onParsePostsListingSuccess(LinkedHashSet<Post> newPosts, String lastItem) {
|
||||||
if (newPosts.size() == 0 && lastItem != null && !lastItem.equals("") && !lastItem.equals("null")) {
|
if (newPosts.size() == 0 && lastItem != null && !lastItem.equals("") && !lastItem.equals("null")) {
|
||||||
loadMultiRedditPostsAfter(params, callback, lastItem);
|
loadMultiRedditPostsAfter(params, callback, lastItem);
|
||||||
} else {
|
} else {
|
||||||
callback.onResult(newPosts, lastItem);
|
int currentPostsSize = postLinkedHashSet.size();
|
||||||
|
postLinkedHashSet.addAll(newPosts);
|
||||||
|
if (currentPostsSize == postLinkedHashSet.size()) {
|
||||||
|
callback.onResult(new ArrayList<>(), lastItem);
|
||||||
|
} else {
|
||||||
|
List<Post> newPostsList = new ArrayList<>(postLinkedHashSet).subList(currentPostsSize, postLinkedHashSet.size());
|
||||||
|
callback.onResult(newPostsList, lastItem);
|
||||||
|
}
|
||||||
paginationNetworkStateLiveData.postValue(NetworkState.LOADED);
|
paginationNetworkStateLiveData.postValue(NetworkState.LOADED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package ml.docilealligator.infinityforreddit;
|
package ml.docilealligator.infinityforreddit.Post;
|
||||||
|
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
@ -20,7 +20,7 @@ import java.util.HashMap;
|
|||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import ml.docilealligator.infinityforreddit.Post.Post;
|
import ml.docilealligator.infinityforreddit.RedditAPI;
|
||||||
import ml.docilealligator.infinityforreddit.Utils.JSONUtils;
|
import ml.docilealligator.infinityforreddit.Utils.JSONUtils;
|
||||||
import ml.docilealligator.infinityforreddit.Utils.RedditUtils;
|
import ml.docilealligator.infinityforreddit.Utils.RedditUtils;
|
||||||
import okhttp3.MediaType;
|
import okhttp3.MediaType;
|
@ -39,7 +39,7 @@ import ml.docilealligator.infinityforreddit.Infinity;
|
|||||||
import ml.docilealligator.infinityforreddit.NotificationUtils;
|
import ml.docilealligator.infinityforreddit.NotificationUtils;
|
||||||
import ml.docilealligator.infinityforreddit.Post.Post;
|
import ml.docilealligator.infinityforreddit.Post.Post;
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
import ml.docilealligator.infinityforreddit.SubmitPost;
|
import ml.docilealligator.infinityforreddit.Post.SubmitPost;
|
||||||
import retrofit2.Retrofit;
|
import retrofit2.Retrofit;
|
||||||
|
|
||||||
public class SubmitPostService extends Service {
|
public class SubmitPostService extends Service {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user