mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2024-11-07 03:07:26 +01:00
Load more posts in ViewPostDetailActivity for post feed in PostFragment.
This commit is contained in:
parent
eb40bad3ef
commit
0a286cd9ba
@ -45,8 +45,10 @@ import com.r0adkll.slidr.model.SlidrInterface;
|
|||||||
import org.greenrobot.eventbus.EventBus;
|
import org.greenrobot.eventbus.EventBus;
|
||||||
import org.greenrobot.eventbus.Subscribe;
|
import org.greenrobot.eventbus.Subscribe;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.LinkedHashSet;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.Executor;
|
import java.util.concurrent.Executor;
|
||||||
|
|
||||||
@ -62,6 +64,7 @@ import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
|||||||
import ml.docilealligator.infinityforreddit.SaveThing;
|
import ml.docilealligator.infinityforreddit.SaveThing;
|
||||||
import ml.docilealligator.infinityforreddit.SortType;
|
import ml.docilealligator.infinityforreddit.SortType;
|
||||||
import ml.docilealligator.infinityforreddit.SortTypeSelectionCallback;
|
import ml.docilealligator.infinityforreddit.SortTypeSelectionCallback;
|
||||||
|
import ml.docilealligator.infinityforreddit.apis.RedditAPI;
|
||||||
import ml.docilealligator.infinityforreddit.asynctasks.SwitchAccount;
|
import ml.docilealligator.infinityforreddit.asynctasks.SwitchAccount;
|
||||||
import ml.docilealligator.infinityforreddit.comment.Comment;
|
import ml.docilealligator.infinityforreddit.comment.Comment;
|
||||||
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
|
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
|
||||||
@ -69,8 +72,15 @@ import ml.docilealligator.infinityforreddit.events.NeedForPostListFromPostFragme
|
|||||||
import ml.docilealligator.infinityforreddit.events.ProvidePostListToViewPostDetailActivityEvent;
|
import ml.docilealligator.infinityforreddit.events.ProvidePostListToViewPostDetailActivityEvent;
|
||||||
import ml.docilealligator.infinityforreddit.events.SwitchAccountEvent;
|
import ml.docilealligator.infinityforreddit.events.SwitchAccountEvent;
|
||||||
import ml.docilealligator.infinityforreddit.fragments.ViewPostDetailFragment;
|
import ml.docilealligator.infinityforreddit.fragments.ViewPostDetailFragment;
|
||||||
|
import ml.docilealligator.infinityforreddit.post.HistoryPostPagingSource;
|
||||||
|
import ml.docilealligator.infinityforreddit.post.ParsePost;
|
||||||
import ml.docilealligator.infinityforreddit.post.Post;
|
import ml.docilealligator.infinityforreddit.post.Post;
|
||||||
|
import ml.docilealligator.infinityforreddit.post.PostPagingSource;
|
||||||
|
import ml.docilealligator.infinityforreddit.postfilter.PostFilter;
|
||||||
|
import ml.docilealligator.infinityforreddit.utils.APIUtils;
|
||||||
import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils;
|
import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils;
|
||||||
|
import retrofit2.Call;
|
||||||
|
import retrofit2.Response;
|
||||||
import retrofit2.Retrofit;
|
import retrofit2.Retrofit;
|
||||||
|
|
||||||
public class ViewPostDetailActivity extends BaseActivity implements SortTypeSelectionCallback, ActivityToolbarInterface {
|
public class ViewPostDetailActivity extends BaseActivity implements SortTypeSelectionCallback, ActivityToolbarInterface {
|
||||||
@ -113,6 +123,9 @@ public class ViewPostDetailActivity extends BaseActivity implements SortTypeSele
|
|||||||
@BindView(R.id.close_search_panel_image_view_view_post_detail_activity)
|
@BindView(R.id.close_search_panel_image_view_view_post_detail_activity)
|
||||||
ImageView closeSearchPanelImageView;
|
ImageView closeSearchPanelImageView;
|
||||||
@Inject
|
@Inject
|
||||||
|
@Named("no_oauth")
|
||||||
|
Retrofit mRetrofit;
|
||||||
|
@Inject
|
||||||
@Named("oauth")
|
@Named("oauth")
|
||||||
Retrofit mOauthRetrofit;
|
Retrofit mOauthRetrofit;
|
||||||
@Inject
|
@Inject
|
||||||
@ -130,7 +143,35 @@ public class ViewPostDetailActivity extends BaseActivity implements SortTypeSele
|
|||||||
@State
|
@State
|
||||||
ArrayList<Post> posts;
|
ArrayList<Post> posts;
|
||||||
@State
|
@State
|
||||||
|
int postType;
|
||||||
|
@State
|
||||||
|
String subredditName;
|
||||||
|
@State
|
||||||
|
String username;
|
||||||
|
@State
|
||||||
|
String userWhere;
|
||||||
|
@State
|
||||||
|
String multiPath;
|
||||||
|
@State
|
||||||
|
String query;
|
||||||
|
@State
|
||||||
|
String trendingSource;
|
||||||
|
@State
|
||||||
|
PostFilter postFilter;
|
||||||
|
@State
|
||||||
|
String sortType;
|
||||||
|
@State
|
||||||
|
String sortTime;
|
||||||
|
@State
|
||||||
|
ArrayList<String> readPostList;
|
||||||
|
@State
|
||||||
Post post;
|
Post post;
|
||||||
|
@State
|
||||||
|
boolean isFetchingMorePosts;
|
||||||
|
@State
|
||||||
|
boolean noMorePosts;
|
||||||
|
@State
|
||||||
|
boolean fetchMorePostsFailed;
|
||||||
public Map<String, String> authorIcons = new HashMap<>();
|
public Map<String, String> authorIcons = new HashMap<>();
|
||||||
private FragmentManager fragmentManager;
|
private FragmentManager fragmentManager;
|
||||||
private SlidrInterface mSlidrInterface;
|
private SlidrInterface mSlidrInterface;
|
||||||
@ -327,6 +368,14 @@ public class ViewPostDetailActivity extends BaseActivity implements SortTypeSele
|
|||||||
if (savedInstanceState == null) {
|
if (savedInstanceState == null) {
|
||||||
viewPager2.setCurrentItem(getIntent().getIntExtra(EXTRA_POST_LIST_POSITION, 0), false);
|
viewPager2.setCurrentItem(getIntent().getIntExtra(EXTRA_POST_LIST_POSITION, 0), false);
|
||||||
}
|
}
|
||||||
|
viewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
|
||||||
|
@Override
|
||||||
|
public void onPageSelected(int position) {
|
||||||
|
if (position > posts.size() - 5) {
|
||||||
|
fetchMorePosts();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
searchPanelMaterialCardView.setOnClickListener(null);
|
searchPanelMaterialCardView.setOnClickListener(null);
|
||||||
|
|
||||||
@ -457,6 +506,164 @@ public class ViewPostDetailActivity extends BaseActivity implements SortTypeSele
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void fetchMorePosts() {
|
||||||
|
if (isFetchingMorePosts || noMorePosts) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
isFetchingMorePosts = true;
|
||||||
|
fetchMorePostsFailed = false;
|
||||||
|
|
||||||
|
Handler handler = new Handler();
|
||||||
|
|
||||||
|
if (postType != HistoryPostPagingSource.TYPE_READ_POSTS) {
|
||||||
|
mExecutor.execute(() -> {
|
||||||
|
RedditAPI api = (mAccessToken == null ? mRetrofit : mOauthRetrofit).create(RedditAPI.class);
|
||||||
|
Call<String> call;
|
||||||
|
String afterKey = posts.isEmpty() ? null : posts.get(posts.size() - 1).getFullName();
|
||||||
|
switch (postType) {
|
||||||
|
case PostPagingSource.TYPE_SUBREDDIT:
|
||||||
|
if (mAccessToken == null) {
|
||||||
|
if (sortTime != null) {
|
||||||
|
call = api.getSubredditBestPosts(subredditName, sortType, sortTime, afterKey);
|
||||||
|
} else {
|
||||||
|
call = api.getSubredditBestPosts(subredditName, sortType, afterKey);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (sortTime != null) {
|
||||||
|
call = api.getSubredditBestPostsOauth(subredditName, sortType,
|
||||||
|
sortTime, afterKey, APIUtils.getOAuthHeader(mAccessToken));
|
||||||
|
} else {
|
||||||
|
call = api.getSubredditBestPostsOauth(subredditName, sortType,
|
||||||
|
afterKey, APIUtils.getOAuthHeader(mAccessToken));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PostPagingSource.TYPE_USER:
|
||||||
|
if (mAccessToken == null) {
|
||||||
|
if (sortTime != null) {
|
||||||
|
call = api.getUserPosts(username, afterKey, sortType,
|
||||||
|
sortTime);
|
||||||
|
} else {
|
||||||
|
call = api.getUserPosts(username, afterKey, sortType);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (sortTime != null) {
|
||||||
|
call = api.getUserPostsOauth(username, userWhere, afterKey, sortType,
|
||||||
|
sortTime, APIUtils.getOAuthHeader(mAccessToken));
|
||||||
|
} else {
|
||||||
|
call = api.getUserPostsOauth(username, userWhere, afterKey, sortType,
|
||||||
|
APIUtils.getOAuthHeader(mAccessToken));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PostPagingSource.TYPE_SEARCH:
|
||||||
|
if (subredditName == null) {
|
||||||
|
if (mAccessToken == null) {
|
||||||
|
if (sortTime != null) {
|
||||||
|
call = api.searchPosts(query, afterKey, sortType, sortTime,
|
||||||
|
trendingSource);
|
||||||
|
} else {
|
||||||
|
call = api.searchPosts(query, afterKey, sortType, trendingSource);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (sortTime != null) {
|
||||||
|
call = api.searchPostsOauth(query, afterKey, sortType,
|
||||||
|
sortTime, trendingSource, APIUtils.getOAuthHeader(mAccessToken));
|
||||||
|
} else {
|
||||||
|
call = api.searchPostsOauth(query, afterKey, sortType, trendingSource,
|
||||||
|
APIUtils.getOAuthHeader(mAccessToken));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (mAccessToken == null) {
|
||||||
|
if (sortTime != null) {
|
||||||
|
call = api.searchPostsInSpecificSubreddit(subredditName, query,
|
||||||
|
sortType, sortTime, afterKey);
|
||||||
|
} else {
|
||||||
|
call = api.searchPostsInSpecificSubreddit(subredditName, query,
|
||||||
|
sortType, afterKey);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (sortTime != null) {
|
||||||
|
call = api.searchPostsInSpecificSubredditOauth(subredditName, query,
|
||||||
|
sortType, sortTime, afterKey,
|
||||||
|
APIUtils.getOAuthHeader(mAccessToken));
|
||||||
|
} else {
|
||||||
|
call = api.searchPostsInSpecificSubredditOauth(subredditName, query,
|
||||||
|
sortType, afterKey,
|
||||||
|
APIUtils.getOAuthHeader(mAccessToken));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PostPagingSource.TYPE_MULTI_REDDIT:
|
||||||
|
if (mAccessToken == null) {
|
||||||
|
if (sortTime != null) {
|
||||||
|
call = api.getMultiRedditPosts(multiPath, afterKey, sortTime);
|
||||||
|
} else {
|
||||||
|
call = api.getMultiRedditPosts(multiPath, afterKey);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (sortTime != null) {
|
||||||
|
call = api.getMultiRedditPostsOauth(multiPath, afterKey,
|
||||||
|
sortTime, APIUtils.getOAuthHeader(mAccessToken));
|
||||||
|
} else {
|
||||||
|
call = api.getMultiRedditPostsOauth(multiPath, afterKey,
|
||||||
|
APIUtils.getOAuthHeader(mAccessToken));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PostPagingSource.TYPE_ANONYMOUS_FRONT_PAGE:
|
||||||
|
//case PostPagingSource.TYPE_ANONYMOUS_MULTIREDDIT
|
||||||
|
if (sortTime != null) {
|
||||||
|
call = api.getSubredditBestPosts(subredditName, sortType, sortTime, afterKey);
|
||||||
|
} else {
|
||||||
|
call = api.getSubredditBestPosts(subredditName, sortType, afterKey);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (sortTime != null) {
|
||||||
|
call = api.getBestPosts(sortType, sortTime, afterKey,
|
||||||
|
APIUtils.getOAuthHeader(mAccessToken));
|
||||||
|
} else {
|
||||||
|
call = api.getBestPosts(sortType, afterKey, APIUtils.getOAuthHeader(mAccessToken));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
Response<String> response = call.execute();
|
||||||
|
if (response.isSuccessful()) {
|
||||||
|
String responseString = response.body();
|
||||||
|
LinkedHashSet<Post> newPosts = ParsePost.parsePostsSync(responseString, -1, postFilter, readPostList);
|
||||||
|
if (newPosts == null) {
|
||||||
|
noMorePosts = true;
|
||||||
|
} else {
|
||||||
|
LinkedHashSet<Post> postLinkedHashSet = new LinkedHashSet<>(posts);
|
||||||
|
int currentPostsSize = postLinkedHashSet.size();
|
||||||
|
postLinkedHashSet.addAll(newPosts);
|
||||||
|
if (currentPostsSize == postLinkedHashSet.size()) {
|
||||||
|
noMorePosts = true;
|
||||||
|
} else {
|
||||||
|
posts = new ArrayList<>(postLinkedHashSet);
|
||||||
|
handler.post(() -> sectionsPagerAdapter.notifyItemRangeInserted(currentPostsSize, postLinkedHashSet.size() - currentPostsSize));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
fetchMorePostsFailed = true;
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
fetchMorePostsFailed = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
isFetchingMorePosts = false;
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
public void onAccountSwitchEvent(SwitchAccountEvent event) {
|
public void onAccountSwitchEvent(SwitchAccountEvent event) {
|
||||||
if (!getClass().getName().equals(event.excludeActivityClassName)) {
|
if (!getClass().getName().equals(event.excludeActivityClassName)) {
|
||||||
@ -467,7 +674,19 @@ public class ViewPostDetailActivity extends BaseActivity implements SortTypeSele
|
|||||||
@Subscribe
|
@Subscribe
|
||||||
public void onProvidePostListToViewPostDetailActivityEvent(ProvidePostListToViewPostDetailActivityEvent event) {
|
public void onProvidePostListToViewPostDetailActivityEvent(ProvidePostListToViewPostDetailActivityEvent event) {
|
||||||
if (event.postFragmentId == postFragmentId && posts == null) {
|
if (event.postFragmentId == postFragmentId && posts == null) {
|
||||||
posts = event.posts;
|
this.posts = event.posts;
|
||||||
|
this.postType = event.postType;
|
||||||
|
this.subredditName = event.subredditName;
|
||||||
|
this.username = event.username;
|
||||||
|
this.userWhere = event.userWhere;
|
||||||
|
this.multiPath = event.multiPath;
|
||||||
|
this.query = event.query;
|
||||||
|
this.trendingSource = event.trendingSource;
|
||||||
|
this.postFilter = event.postFilter;
|
||||||
|
this.sortType = event.sortType.getType().value;
|
||||||
|
this.sortTime = event.sortType.getTime() == null ? null : event.sortType.getTime().value;
|
||||||
|
this.readPostList = event.readPostList;
|
||||||
|
|
||||||
if (sectionsPagerAdapter != null) {
|
if (sectionsPagerAdapter != null) {
|
||||||
if (postListPosition > 0)
|
if (postListPosition > 0)
|
||||||
sectionsPagerAdapter.notifyDataSetChanged();
|
sectionsPagerAdapter.notifyDataSetChanged();
|
||||||
|
@ -49,14 +49,6 @@ public interface RedditAPI {
|
|||||||
@GET("comments/{id}.json?raw_json=1")
|
@GET("comments/{id}.json?raw_json=1")
|
||||||
Call<String> getPost(@Path("id") String id);
|
Call<String> getPost(@Path("id") String id);
|
||||||
|
|
||||||
@GET("user/{username}/submitted.json?raw_json=1&limit=25")
|
|
||||||
Call<String> getUserPosts(@Path("username") String username, @Query("after") String lastItem,
|
|
||||||
@Query("sort") String sortType);
|
|
||||||
|
|
||||||
@GET("user/{username}/submitted.json?raw_json=1&limit=25")
|
|
||||||
Call<String> getUserPosts(@Path("username") String username, @Query("after") String lastItem,
|
|
||||||
@Query("sort") String sortType, @Query("t") String sortTime);
|
|
||||||
|
|
||||||
@GET("user/{username}/about.json?raw_json=1")
|
@GET("user/{username}/about.json?raw_json=1")
|
||||||
Call<String> getUserData(@Path("username") String username);
|
Call<String> getUserData(@Path("username") String username);
|
||||||
|
|
||||||
@ -212,26 +204,6 @@ public interface RedditAPI {
|
|||||||
@POST("/api/multi/favorite?raw_json=1&gilding_detail=1")
|
@POST("/api/multi/favorite?raw_json=1&gilding_detail=1")
|
||||||
Call<String> favoriteMultiReddit(@HeaderMap Map<String, String> headers, @FieldMap Map<String, String> params);
|
Call<String> favoriteMultiReddit(@HeaderMap Map<String, String> headers, @FieldMap Map<String, String> params);
|
||||||
|
|
||||||
@GET("/api/multi/user/{username}")
|
|
||||||
Call<String> getUserMultiReddits(@Path("username") String username);
|
|
||||||
|
|
||||||
@GET("{multipath}?raw_json=1")
|
|
||||||
Call<String> getMultiRedditPosts(@Path(value = "multipath", encoded = true) String multiPath,
|
|
||||||
@Query("after") String after);
|
|
||||||
|
|
||||||
@GET("{multipath}?raw_json=1")
|
|
||||||
Call<String> getMultiRedditPosts(@Path(value = "multipath", encoded = true) String multiPath,
|
|
||||||
@Query("after") String after, @Query("t") String sortTime);
|
|
||||||
|
|
||||||
@GET("{multipath}.json?raw_json=1")
|
|
||||||
Call<String> getMultiRedditPostsOauth(@Path(value = "multipath", encoded = true) String multiPath,
|
|
||||||
@Query("after") String after, @Query("t") String sortTime,
|
|
||||||
@HeaderMap Map<String, String> headers);
|
|
||||||
|
|
||||||
@GET("{multipath}.json?raw_json=1")
|
|
||||||
Call<String> getMultiRedditPostsOauth(@Path(value = "multipath", encoded = true) String multiPath,
|
|
||||||
@Query("after") String after, @HeaderMap Map<String, String> headers);
|
|
||||||
|
|
||||||
@FormUrlEncoded
|
@FormUrlEncoded
|
||||||
@POST("/api/multi/multipath")
|
@POST("/api/multi/multipath")
|
||||||
Call<String> createMultiReddit(@HeaderMap Map<String, String> headers, @FieldMap Map<String, String> params);
|
Call<String> createMultiReddit(@HeaderMap Map<String, String> headers, @FieldMap Map<String, String> params);
|
||||||
@ -408,6 +380,107 @@ public interface RedditAPI {
|
|||||||
ListenableFuture<Response<String>> getMultiRedditPostsOauthListenableFuture(@Path(value = "multipath", encoded = true) String multiPath,
|
ListenableFuture<Response<String>> getMultiRedditPostsOauthListenableFuture(@Path(value = "multipath", encoded = true) String multiPath,
|
||||||
@Query("after") String after, @HeaderMap Map<String, String> headers);
|
@Query("after") String after, @HeaderMap Map<String, String> headers);
|
||||||
|
|
||||||
|
@GET("{sortType}?raw_json=1")
|
||||||
|
Call<String> getBestPosts(@Path("sortType") String sortType, @Query("after") String lastItem, @HeaderMap Map<String, String> headers);
|
||||||
|
|
||||||
|
@GET("{sortType}?raw_json=1")
|
||||||
|
Call<String> getBestPosts(@Path("sortType") String sortType, @Query("t") String sortTime,
|
||||||
|
@Query("after") String lastItem, @HeaderMap Map<String, String> headers);
|
||||||
|
|
||||||
|
@GET("r/{subredditName}/{sortType}.json?raw_json=1&limit=25&always_show_media=1")
|
||||||
|
Call<String> getSubredditBestPostsOauth(@Path("subredditName") String subredditName, @Path("sortType") String sortType,
|
||||||
|
@Query("after") String lastItem, @HeaderMap Map<String, String> headers);
|
||||||
|
|
||||||
|
@GET("r/{subredditName}/{sortType}.json?raw_json=1&limit=25&always_show_media=1")
|
||||||
|
Call<String> getSubredditBestPostsOauth(@Path("subredditName") String subredditName, @Path("sortType") String sortType,
|
||||||
|
@Query("t") String sortTime, @Query("after") String lastItem,
|
||||||
|
@HeaderMap Map<String, String> headers);
|
||||||
|
|
||||||
|
@GET("r/{subredditName}/{sortType}.json?raw_json=1&limit=25&always_show_media=1")
|
||||||
|
Call<String> getSubredditBestPosts(@Path("subredditName") String subredditName, @Path("sortType") String sortType,
|
||||||
|
@Query("after") String lastItem);
|
||||||
|
|
||||||
|
@GET("r/{subredditName}/{sortType}.json?raw_json=1&limit=25&always_show_media=1")
|
||||||
|
Call<String> getSubredditBestPosts(@Path("subredditName") String subredditName, @Path("sortType") String sortType,
|
||||||
|
@Query("t") String sortTime, @Query("after") String lastItem);
|
||||||
|
|
||||||
|
@GET("user/{username}/{where}.json?&type=links&raw_json=1&limit=25")
|
||||||
|
Call<String> getUserPostsOauth(@Path("username") String username, @Path("where") String where,
|
||||||
|
@Query("after") String lastItem, @Query("sort") String sortType, @HeaderMap Map<String, String> headers);
|
||||||
|
|
||||||
|
@GET("user/{username}/{where}.json?&type=links&raw_json=1&limit=25")
|
||||||
|
Call<String> getUserPostsOauth(@Path("username") String username, @Path("where") String where,
|
||||||
|
@Query("after") String lastItem, @Query("sort") String sortType,
|
||||||
|
@Query("t") String sortTime, @HeaderMap Map<String, String> headers);
|
||||||
|
|
||||||
|
@GET("user/{username}/submitted.json?raw_json=1&limit=25")
|
||||||
|
Call<String> getUserPosts(@Path("username") String username, @Query("after") String lastItem,
|
||||||
|
@Query("sort") String sortType);
|
||||||
|
|
||||||
|
@GET("user/{username}/submitted.json?raw_json=1&limit=25")
|
||||||
|
Call<String> getUserPosts(@Path("username") String username, @Query("after") String lastItem,
|
||||||
|
@Query("sort") String sortType, @Query("t") String sortTime);
|
||||||
|
|
||||||
|
@GET("search.json?include_over_18=1&raw_json=1&type=link")
|
||||||
|
Call<String> searchPostsOauth(@Query("q") String query, @Query("after") String after,
|
||||||
|
@Query("sort") String sort, @Query("source") String source,
|
||||||
|
@HeaderMap Map<String, String> headers);
|
||||||
|
|
||||||
|
@GET("search.json?include_over_18=1&raw_json=1&type=link")
|
||||||
|
Call<String> searchPostsOauth(@Query("q") String query, @Query("after") String after,
|
||||||
|
@Query("sort") String sort, @Query("t") String sortTime,
|
||||||
|
@Query("source") String source,
|
||||||
|
@HeaderMap Map<String, String> headers);
|
||||||
|
|
||||||
|
@GET("search.json?include_over_18=1&raw_json=1&type=link")
|
||||||
|
Call<String> searchPosts(@Query("q") String query, @Query("after") String after,
|
||||||
|
@Query("sort") String sort, @Query("source") String source);
|
||||||
|
|
||||||
|
@GET("search.json?include_over_18=1&raw_json=1&type=link")
|
||||||
|
Call<String> searchPosts(@Query("q") String query, @Query("after") String after,
|
||||||
|
@Query("sort") String sort, @Query("t") String sortTime,
|
||||||
|
@Query("source") String source);
|
||||||
|
|
||||||
|
@GET("r/{subredditName}/search.json?include_over_18=1&raw_json=1&type=link&restrict_sr=true")
|
||||||
|
Call<String> searchPostsInSpecificSubredditOauth(@Path("subredditName") String subredditName,
|
||||||
|
@Query("q") String query, @Query("sort") String sort,
|
||||||
|
@Query("after") String after,
|
||||||
|
@HeaderMap Map<String, String> headers);
|
||||||
|
|
||||||
|
@GET("r/{subredditName}/search.json?include_over_18=1&raw_json=1&type=link&restrict_sr=true")
|
||||||
|
Call<String> searchPostsInSpecificSubredditOauth(@Path("subredditName") String subredditName,
|
||||||
|
@Query("q") String query, @Query("sort") String sort,
|
||||||
|
@Query("t") String sortTime, @Query("after") String after,
|
||||||
|
@HeaderMap Map<String, String> headers);
|
||||||
|
|
||||||
|
@GET("r/{subredditName}/search.json?include_over_18=1&raw_json=1&type=link&restrict_sr=true")
|
||||||
|
|
||||||
|
Call<String> searchPostsInSpecificSubreddit(@Path("subredditName") String subredditName,
|
||||||
|
@Query("q") String query, @Query("sort") String sort,
|
||||||
|
@Query("after") String after);
|
||||||
|
|
||||||
|
@GET("r/{subredditName}/search.json?include_over_18=1&raw_json=1&type=link&restrict_sr=true")
|
||||||
|
Call<String> searchPostsInSpecificSubreddit(@Path("subredditName") String subredditName,
|
||||||
|
@Query("q") String query, @Query("sort") String sort,
|
||||||
|
@Query("t") String sortTime, @Query("after") String after);
|
||||||
|
|
||||||
|
@GET("{multipath}?raw_json=1")
|
||||||
|
Call<String> getMultiRedditPosts(@Path(value = "multipath", encoded = true) String multiPath,
|
||||||
|
@Query("after") String after);
|
||||||
|
|
||||||
|
@GET("{multipath}?raw_json=1")
|
||||||
|
Call<String> getMultiRedditPosts(@Path(value = "multipath", encoded = true) String multiPath,
|
||||||
|
@Query("after") String after, @Query("t") String sortTime);
|
||||||
|
|
||||||
|
@GET("{multipath}.json?raw_json=1")
|
||||||
|
Call<String> getMultiRedditPostsOauth(@Path(value = "multipath", encoded = true) String multiPath,
|
||||||
|
@Query("after") String after, @Query("t") String sortTime,
|
||||||
|
@HeaderMap Map<String, String> headers);
|
||||||
|
|
||||||
|
@GET("{multipath}.json?raw_json=1")
|
||||||
|
Call<String> getMultiRedditPostsOauth(@Path(value = "multipath", encoded = true) String multiPath,
|
||||||
|
@Query("after") String after, @HeaderMap Map<String, String> headers);
|
||||||
|
|
||||||
@POST("r/{subredditName}/api/delete_sr_icon")
|
@POST("r/{subredditName}/api/delete_sr_icon")
|
||||||
Call<String> deleteSrIcon(@HeaderMap Map<String, String> headers, @Path("subredditName") String subredditName);
|
Call<String> deleteSrIcon(@HeaderMap Map<String, String> headers, @Path("subredditName") String subredditName);
|
||||||
|
|
||||||
|
@ -2,14 +2,39 @@ package ml.docilealligator.infinityforreddit.events;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import ml.docilealligator.infinityforreddit.SortType;
|
||||||
import ml.docilealligator.infinityforreddit.post.Post;
|
import ml.docilealligator.infinityforreddit.post.Post;
|
||||||
|
import ml.docilealligator.infinityforreddit.postfilter.PostFilter;
|
||||||
|
|
||||||
public class ProvidePostListToViewPostDetailActivityEvent {
|
public class ProvidePostListToViewPostDetailActivityEvent {
|
||||||
public long postFragmentId;
|
public long postFragmentId;
|
||||||
public ArrayList<Post> posts;
|
public ArrayList<Post> posts;
|
||||||
|
public int postType;
|
||||||
|
public String subredditName;
|
||||||
|
public String username;
|
||||||
|
public String userWhere;
|
||||||
|
public String multiPath;
|
||||||
|
public String query;
|
||||||
|
public String trendingSource;
|
||||||
|
public PostFilter postFilter;
|
||||||
|
public SortType sortType;
|
||||||
|
public ArrayList<String> readPostList;
|
||||||
|
|
||||||
public ProvidePostListToViewPostDetailActivityEvent(long postFragmentId, ArrayList<Post> posts) {
|
public ProvidePostListToViewPostDetailActivityEvent(long postFragmentId, ArrayList<Post> posts, int postType,
|
||||||
|
String subredditName, String username, String userWhere,
|
||||||
|
String multiPath, String query, String trendingSource,
|
||||||
|
PostFilter postFilter, SortType sortType, ArrayList<String> readPostList) {
|
||||||
this.postFragmentId = postFragmentId;
|
this.postFragmentId = postFragmentId;
|
||||||
this.posts = posts;
|
this.posts = posts;
|
||||||
|
this.postType = postType;
|
||||||
|
this.subredditName = subredditName;
|
||||||
|
this.username = username;
|
||||||
|
this.userWhere = userWhere;
|
||||||
|
this.multiPath = multiPath;
|
||||||
|
this.query = query;
|
||||||
|
this.trendingSource = trendingSource;
|
||||||
|
this.postFilter = postFilter;
|
||||||
|
this.sortType = sortType;
|
||||||
|
this.readPostList = readPostList;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1264,7 +1264,9 @@ public class HistoryPostFragment extends Fragment implements FragmentCommunicato
|
|||||||
@Subscribe
|
@Subscribe
|
||||||
public void onNeedForPostListFromPostRecyclerViewAdapterEvent(NeedForPostListFromPostFragmentEvent event) {
|
public void onNeedForPostListFromPostRecyclerViewAdapterEvent(NeedForPostListFromPostFragmentEvent event) {
|
||||||
if (historyPostFragmentId == event.postFragmentTimeId && mAdapter != null) {
|
if (historyPostFragmentId == event.postFragmentTimeId && mAdapter != null) {
|
||||||
EventBus.getDefault().post(new ProvidePostListToViewPostDetailActivityEvent(historyPostFragmentId, new ArrayList<>(mAdapter.snapshot())));
|
EventBus.getDefault().post(new ProvidePostListToViewPostDetailActivityEvent(historyPostFragmentId,
|
||||||
|
new ArrayList<>(mAdapter.snapshot()), postType, null, null, null,
|
||||||
|
null, null, null, postFilter, null, null));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2035,7 +2035,9 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
|||||||
@Subscribe
|
@Subscribe
|
||||||
public void onNeedForPostListFromPostRecyclerViewAdapterEvent(NeedForPostListFromPostFragmentEvent event) {
|
public void onNeedForPostListFromPostRecyclerViewAdapterEvent(NeedForPostListFromPostFragmentEvent event) {
|
||||||
if (postFragmentId == event.postFragmentTimeId && mAdapter != null) {
|
if (postFragmentId == event.postFragmentTimeId && mAdapter != null) {
|
||||||
EventBus.getDefault().post(new ProvidePostListToViewPostDetailActivityEvent(postFragmentId, new ArrayList<>(mAdapter.snapshot())));
|
EventBus.getDefault().post(new ProvidePostListToViewPostDetailActivityEvent(postFragmentId,
|
||||||
|
new ArrayList<>(mAdapter.snapshot()), postType, subredditName, username, where,
|
||||||
|
multiRedditPath, query, trendingSource, postFilter, sortType, readPosts));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ import retrofit2.Response;
|
|||||||
import retrofit2.Retrofit;
|
import retrofit2.Retrofit;
|
||||||
|
|
||||||
public class HistoryPostPagingSource extends ListenableFuturePagingSource<String, Post> {
|
public class HistoryPostPagingSource extends ListenableFuturePagingSource<String, Post> {
|
||||||
public static final int TYPE_READ_POSTS = 0;
|
public static final int TYPE_READ_POSTS = 100;
|
||||||
|
|
||||||
private Retrofit retrofit;
|
private Retrofit retrofit;
|
||||||
private Executor executor;
|
private Executor executor;
|
||||||
|
Loading…
Reference in New Issue
Block a user