diff options
author | Docile-Alligator <25734209+Docile-Alligator@users.noreply.github.com> | 2024-08-22 02:47:30 +0000 |
---|---|---|
committer | Docile-Alligator <25734209+Docile-Alligator@users.noreply.github.com> | 2024-08-22 02:47:30 +0000 |
commit | d270378ecdecd2760ec237d09a0e0b3470001325 (patch) | |
tree | dacbe6aa37a4b559612bdd3033d9efc2c8be0fa5 /app | |
parent | 7b9ece76fd7a5daf68a43b3aa05946e4d374ad5e (diff) | |
download | infinity-for-reddit-d270378ecdecd2760ec237d09a0e0b3470001325.tar infinity-for-reddit-d270378ecdecd2760ec237d09a0e0b3470001325.tar.gz infinity-for-reddit-d270378ecdecd2760ec237d09a0e0b3470001325.tar.bz2 infinity-for-reddit-d270378ecdecd2760ec237d09a0e0b3470001325.tar.lz infinity-for-reddit-d270378ecdecd2760ec237d09a0e0b3470001325.tar.xz infinity-for-reddit-d270378ecdecd2760ec237d09a0e0b3470001325.tar.zst infinity-for-reddit-d270378ecdecd2760ec237d09a0e0b3470001325.zip |
Searching posts inside a multireddit is available.
Diffstat (limited to 'app')
5 files changed, 163 insertions, 30 deletions
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchResultActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchResultActivity.java index 059bea5a..331d59ff 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchResultActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchResultActivity.java @@ -804,8 +804,19 @@ public class SearchResultActivity extends BaseActivity implements SortTypeSelect private Fragment createPostFragment() { PostFragment mFragment = new PostFragment(); Bundle bundle = new Bundle(); - bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostPagingSource.TYPE_SEARCH); - bundle.putString(PostFragment.EXTRA_NAME, mSearchInThingType == SelectThingReturnKey.THING_TYPE.USER ? "u_" + mSearchInSubredditOrUserName : mSearchInSubredditOrUserName); + switch (mSearchInThingType) { + case SelectThingReturnKey.THING_TYPE.SUBREDDIT: + bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostPagingSource.TYPE_SEARCH); + bundle.putString(PostFragment.EXTRA_NAME, mSearchInSubredditOrUserName); + break; + case SelectThingReturnKey.THING_TYPE.USER: + bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostPagingSource.TYPE_SEARCH); + bundle.putString(PostFragment.EXTRA_NAME, "u_" + mSearchInSubredditOrUserName); + break; + case SelectThingReturnKey.THING_TYPE.MULTIREDDIT: + bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostPagingSource.TYPE_MULTI_REDDIT); + bundle.putString(PostFragment.EXTRA_NAME, mSearchInMultiReddit.getPath()); + } bundle.putString(PostFragment.EXTRA_QUERY, mQuery); bundle.putString(PostFragment.EXTRA_TRENDING_SOURCE, getIntent().getStringExtra(EXTRA_TRENDING_SOURCE)); mFragment.setArguments(bundle); diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/apis/RedditAPI.java b/app/src/main/java/ml/docilealligator/infinityforreddit/apis/RedditAPI.java index 78bb8bb4..fdf89e9a 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/apis/RedditAPI.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/apis/RedditAPI.java @@ -320,12 +320,27 @@ public interface RedditAPI { @GET("{multipath}?raw_json=1&limit=100") ListenableFuture<Response<String>> getMultiRedditPostsListenableFuture(@Path(value = "multipath", encoded = true) String multiPath, + @Path(value = "sortType", encoded = true) SortType.Type sortType, @Query("after") String after, @Query("t") SortType.Time sortTime); - @GET("{multipath}.json?raw_json=1&limit=100") + @GET("{multipath}/{sortType}.json?raw_json=1&limit=100") ListenableFuture<Response<String>> getMultiRedditPostsOauthListenableFuture(@Path(value = "multipath", encoded = true) String multiPath, - @Query("after") String after, @Query("t") SortType.Time sortTime, - @HeaderMap Map<String, String> headers); + @Path(value = "sortType", encoded = true) SortType.Type sortType, + @Query("after") String after, @Query("t") SortType.Time sortTime, + @HeaderMap Map<String, String> headers); + + @GET("{multipath}/search.json?raw_json=1&limit=100&type=link&restrict_sr=on&sr_detail=true&include_over_18=1&always_show_media=1") + ListenableFuture<Response<String>> searchMultiRedditPostsListenableFuture(@Path(value = "multipath", encoded = true) String multiPath, @Query("q") String query, + @Query("after") String after, + @Query("sort") SortType.Type sortType, + @Query("t") SortType.Time sortTime); + + @GET("{multipath}/search.json?raw_json=1&limit=100&type=link&restrict_sr=on&sr_detail=true&include_over_18=1&always_show_media=1") + ListenableFuture<Response<String>> searchMultiRedditPostsOauthListenableFuture(@Path(value = "multipath", encoded = true) String multiPath, @Query("q") String query, + @Query("after") String after, + @Query("sort") SortType.Type sortType, + @Query("t") SortType.Time sortTime, + @HeaderMap Map<String, String> headers); @GET("{sortType}?raw_json=1&limit=100") Call<String> getBestPosts(@Path("sortType") SortType.Type sortType, @Query("t") SortType.Time sortTime, diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/PostFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/PostFragment.java index 2e488ac2..e4850443 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/PostFragment.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/PostFragment.java @@ -558,8 +558,9 @@ public class PostFragment extends Fragment implements FragmentCommunicator { }); } else if (postType == PostPagingSource.TYPE_MULTI_REDDIT) { multiRedditPath = getArguments().getString(EXTRA_NAME); + query = getArguments().getString(EXTRA_QUERY); if (savedInstanceState == null) { - postFragmentId += multiRedditPath.hashCode(); + postFragmentId += multiRedditPath.hashCode() + (query == null ? 0 : query.hashCode()); } usage = PostFilterUsage.MULTIREDDIT_TYPE; @@ -592,6 +593,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator { public void typeChipClicked(int filter) { Intent intent = new Intent(activity, FilteredPostsActivity.class); intent.putExtra(FilteredPostsActivity.EXTRA_NAME, multiRedditPath); + intent.putExtra(FilteredPostsActivity.EXTRA_QUERY, query); intent.putExtra(FilteredPostsActivity.EXTRA_POST_TYPE, postType); intent.putExtra(FilteredPostsActivity.EXTRA_POST_TYPE_FILTER, filter); startActivity(intent); @@ -601,6 +603,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator { public void flairChipClicked(String flair) { Intent intent = new Intent(activity, FilteredPostsActivity.class); intent.putExtra(FilteredPostsActivity.EXTRA_NAME, multiRedditPath); + intent.putExtra(FilteredPostsActivity.EXTRA_QUERY, query); intent.putExtra(FilteredPostsActivity.EXTRA_POST_TYPE, postType); intent.putExtra(FilteredPostsActivity.EXTRA_CONTAIN_FLAIR, flair); startActivity(intent); @@ -610,6 +613,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator { public void nsfwChipClicked() { Intent intent = new Intent(activity, FilteredPostsActivity.class); intent.putExtra(FilteredPostsActivity.EXTRA_NAME, multiRedditPath); + intent.putExtra(FilteredPostsActivity.EXTRA_QUERY, query); intent.putExtra(FilteredPostsActivity.EXTRA_POST_TYPE, postType); intent.putExtra(FilteredPostsActivity.EXTRA_POST_TYPE_FILTER, Post.NSFW_TYPE); startActivity(intent); @@ -1190,7 +1194,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator { } else if (postType == PostPagingSource.TYPE_MULTI_REDDIT) { mPostViewModel = new ViewModelProvider(PostFragment.this, new PostViewModel.Factory(mExecutor, activity.accountName.equals(Account.ANONYMOUS_ACCOUNT) ? mRetrofit : mOauthRetrofit, activity.accessToken, activity.accountName, mSharedPreferences, mPostFeedScrolledPositionSharedPreferences, - mPostHistorySharedPreferences, multiRedditPath, postType, sortType, postFilter, readPosts)) + mPostHistorySharedPreferences, multiRedditPath, query, postType, sortType, postFilter, readPosts)) .get(PostViewModel.class); } else if (postType == PostPagingSource.TYPE_USER) { mPostViewModel = new ViewModelProvider(PostFragment.this, new PostViewModel.Factory(mExecutor, @@ -1208,7 +1212,6 @@ public class PostFragment extends Fragment implements FragmentCommunicator { } private void initializeAndBindPostViewModelForAnonymous(String concatenatedSubredditNames) { - //For anonymous user if (postType == PostPagingSource.TYPE_SEARCH) { mPostViewModel = new ViewModelProvider(PostFragment.this, new PostViewModel.Factory(mExecutor, mRetrofit, null, activity.accountName, mSharedPreferences, @@ -1669,6 +1672,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator { } else if (postType == PostPagingSource.TYPE_MULTI_REDDIT || postType == PostPagingSource.TYPE_ANONYMOUS_MULTIREDDIT) { Intent intent = new Intent(activity, CustomizePostFilterActivity.class); intent.putExtra(FilteredPostsActivity.EXTRA_NAME, multiRedditPath); + intent.putExtra(FilteredPostsActivity.EXTRA_QUERY, query); intent.putExtra(FilteredPostsActivity.EXTRA_POST_TYPE, postType); intent.putExtra(CustomizePostFilterActivity.EXTRA_START_FILTERED_POSTS_WHEN_FINISH, true); startActivity(intent); diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/post/PostPagingSource.java b/app/src/main/java/ml/docilealligator/infinityforreddit/post/PostPagingSource.java index 7b0930ec..72038fba 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/post/PostPagingSource.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/post/PostPagingSource.java @@ -76,9 +76,10 @@ public class PostPagingSource extends ListenableFuturePagingSource<String, Post> postLinkedHashSet = new LinkedHashSet<>(); } + // PostPagingSource.TYPE_SUBREDDIT || PostPagingSource.TYPE_ANONYMOUS_FRONT_PAGE || PostPagingSource.TYPE_ANONYMOUS_MULTIREDDIT: PostPagingSource(Executor executor, Retrofit retrofit, @Nullable String accessToken, @NonNull String accountName, SharedPreferences sharedPreferences, SharedPreferences postFeedScrolledPositionSharedPreferences, - String path, int postType, SortType sortType, PostFilter postFilter, + String name, int postType, SortType sortType, PostFilter postFilter, List<String> readPostList) { this.executor = executor; this.retrofit = retrofit; @@ -86,25 +87,13 @@ public class PostPagingSource extends ListenableFuturePagingSource<String, Post> this.accountName = accountName; this.sharedPreferences = sharedPreferences; this.postFeedScrolledPositionSharedPreferences = postFeedScrolledPositionSharedPreferences; - if (postType == TYPE_SUBREDDIT || postType == TYPE_ANONYMOUS_FRONT_PAGE || postType == TYPE_ANONYMOUS_MULTIREDDIT) { - this.subredditOrUserName = path; - if (subredditOrUserName == null) { - subredditOrUserName = "popular"; - } - } else { - if (sortType != null) { - if (path.endsWith("/")) { - multiRedditPath = path + sortType.getType().value; - } else { - multiRedditPath = path + "/" + sortType.getType().value; - } - } else { - multiRedditPath = path; - } + this.subredditOrUserName = name; + if (subredditOrUserName == null) { + subredditOrUserName = "popular"; } this.postType = postType; if (sortType == null) { - if ("popular".equals(path) || "all".equals(path)) { + if ("popular".equals(name) || "all".equals(name)) { this.sortType = new SortType(SortType.Type.HOT); } else { this.sortType = new SortType(SortType.Type.BEST); @@ -117,6 +106,34 @@ public class PostPagingSource extends ListenableFuturePagingSource<String, Post> postLinkedHashSet = new LinkedHashSet<>(); } + // PostPagingSource.TYPE_MULTI_REDDIT + PostPagingSource(Executor executor, Retrofit retrofit, @Nullable String accessToken, @NonNull String accountName, + SharedPreferences sharedPreferences, SharedPreferences postFeedScrolledPositionSharedPreferences, + String path, String query, int postType, SortType sortType, PostFilter postFilter, + List<String> readPostList) { + this.executor = executor; + this.retrofit = retrofit; + this.accessToken = accessToken; + this.accountName = accountName; + this.sharedPreferences = sharedPreferences; + this.postFeedScrolledPositionSharedPreferences = postFeedScrolledPositionSharedPreferences; + if (path.endsWith("/")) { + multiRedditPath = path.substring(0, multiRedditPath.length() - 1); + } else { + multiRedditPath = path; + } + this.query = query; + this.postType = postType; + if (sortType == null) { + this.sortType = new SortType(SortType.Type.HOT); + } else { + this.sortType = sortType; + } + this.postFilter = postFilter; + this.readPostList = readPostList; + postLinkedHashSet = new LinkedHashSet<>(); + } + PostPagingSource(Executor executor, Retrofit retrofit, @Nullable String accessToken, @NonNull String accountName, SharedPreferences sharedPreferences, SharedPreferences postFeedScrolledPositionSharedPreferences, String subredditOrUserName, int postType, SortType sortType, PostFilter postFilter, @@ -308,10 +325,20 @@ public class PostPagingSource extends ListenableFuturePagingSource<String, Post> private ListenableFuture<LoadResult<String, Post>> loadMultiRedditPosts(@NonNull LoadParams<String> loadParams, RedditAPI api) { ListenableFuture<Response<String>> multiRedditPosts; if (accountName.equals(Account.ANONYMOUS_ACCOUNT)) { - multiRedditPosts = api.getMultiRedditPostsListenableFuture(multiRedditPath, loadParams.getKey(), sortType.getTime()); + if (query != null && !query.isEmpty()) { + multiRedditPosts = api.searchMultiRedditPostsListenableFuture(multiRedditPath, query, loadParams.getKey(), + sortType.getType(), sortType.getTime()); + } else { + multiRedditPosts = api.getMultiRedditPostsListenableFuture(multiRedditPath, sortType.getType(), loadParams.getKey(), sortType.getTime()); + } } else { - multiRedditPosts = api.getMultiRedditPostsOauthListenableFuture(multiRedditPath, loadParams.getKey(), - sortType.getTime(), APIUtils.getOAuthHeader(accessToken)); + if (query != null && !query.isEmpty()) { + multiRedditPosts = api.searchMultiRedditPostsOauthListenableFuture(multiRedditPath, query, loadParams.getKey(), + sortType.getType(), sortType.getTime(), APIUtils.getOAuthHeader(accessToken)); + } else { + multiRedditPosts = api.getMultiRedditPostsOauthListenableFuture(multiRedditPath, sortType.getType(), loadParams.getKey(), + sortType.getTime(), APIUtils.getOAuthHeader(accessToken)); + } } ListenableFuture<LoadResult<String, Post>> pageFuture = Futures.transform(multiRedditPosts, this::transformData, executor); diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/post/PostViewModel.java b/app/src/main/java/ml/docilealligator/infinityforreddit/post/PostViewModel.java index aad51bad..c3ea8734 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/post/PostViewModel.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/post/PostViewModel.java @@ -51,6 +51,7 @@ public class PostViewModel extends ViewModel { private final MutableLiveData<PostFilter> postFilterLiveData; private final SortTypeAndPostFilterLiveData sortTypeAndPostFilterLiveData; + // PostPagingSource.TYPE_FRONT_PAGE public PostViewModel(Executor executor, Retrofit retrofit, @Nullable String accessToken, @NonNull String accountName, SharedPreferences sharedPreferences, SharedPreferences postFeedScrolledPositionSharedPreferences, @Nullable SharedPreferences postHistorySharedPreferences, int postType, @@ -90,6 +91,7 @@ public class PostViewModel extends ViewModel { && postHistorySharedPreferences.getBoolean((accountName.equals(Account.ANONYMOUS_ACCOUNT) ? "" : accountName) + SharedPreferencesUtils.HIDE_READ_POSTS_AUTOMATICALLY_BASE, false)); } + // PostPagingSource.TYPE_SUBREDDIT || PostPagingSource.TYPE_ANONYMOUS_FRONT_PAGE || PostPagingSource.TYPE_ANONYMOUS_MULTIREDDIT public PostViewModel(Executor executor, Retrofit retrofit, @Nullable String accessToken, @NonNull String accountName, SharedPreferences sharedPreferences, SharedPreferences postFeedScrolledPositionSharedPreferences, @Nullable SharedPreferences postHistorySharedPreferences, String subredditName, int postType, @@ -130,6 +132,48 @@ public class PostViewModel extends ViewModel { && postHistorySharedPreferences.getBoolean((accountName.equals(Account.ANONYMOUS_ACCOUNT) ? "" : accountName) + SharedPreferencesUtils.HIDE_READ_POSTS_AUTOMATICALLY_BASE, false)); } + // PostPagingSource.TYPE_MULTI_REDDIT + public PostViewModel(Executor executor, Retrofit retrofit, @Nullable String accessToken, @NonNull String accountName, + SharedPreferences sharedPreferences, SharedPreferences postFeedScrolledPositionSharedPreferences, + @Nullable SharedPreferences postHistorySharedPreferences, String multiredditPath, String query, int postType, + SortType sortType, PostFilter postFilter, List<String> readPostList) { + this.executor = executor; + this.retrofit = retrofit; + this.accessToken = accessToken; + this.accountName = accountName; + this.sharedPreferences = sharedPreferences; + this.postFeedScrolledPositionSharedPreferences = postFeedScrolledPositionSharedPreferences; + this.postType = postType; + this.sortType = sortType; + this.postFilter = postFilter; + this.readPostList = readPostList; + this.name = multiredditPath; + this.query = query; + + sortTypeLiveData = new MutableLiveData<>(sortType); + postFilterLiveData = new MutableLiveData<>(postFilter); + + sortTypeAndPostFilterLiveData = new SortTypeAndPostFilterLiveData(sortTypeLiveData, postFilterLiveData); + + Pager<String, Post> pager = new Pager<>(new PagingConfig(100, 4, false, 10), this::returnPagingSoruce); + + posts = Transformations.switchMap(sortTypeAndPostFilterLiveData, sortAndPostFilter -> { + changeSortTypeAndPostFilter( + sortTypeLiveData.getValue(), postFilterLiveData.getValue()); + return PagingLiveData.cachedIn(PagingLiveData.getLiveData(pager), ViewModelKt.getViewModelScope(this)); + }); + + postsWithReadPostsHidden = PagingLiveData.cachedIn(Transformations.switchMap(currentlyReadPostIdsLiveData, + currentlyReadPostIds -> Transformations.map( + posts, + postPagingData -> PagingDataTransforms.filter( + postPagingData, executor, + post -> !post.isRead() || !currentlyReadPostIdsLiveData.getValue()))), ViewModelKt.getViewModelScope(this)); + + currentlyReadPostIdsLiveData.setValue(postHistorySharedPreferences != null + && postHistorySharedPreferences.getBoolean((accountName.equals(Account.ANONYMOUS_ACCOUNT) ? "" : accountName) + SharedPreferencesUtils.HIDE_READ_POSTS_AUTOMATICALLY_BASE, false)); + } + public PostViewModel(Executor executor, Retrofit retrofit, @Nullable String accessToken, @NonNull String accountName, SharedPreferences sharedPreferences, SharedPreferences postFeedScrolledPositionSharedPreferences, @@ -173,6 +217,7 @@ public class PostViewModel extends ViewModel { && postHistorySharedPreferences.getBoolean((accountName.equals(Account.ANONYMOUS_ACCOUNT) ? "" : accountName) + SharedPreferencesUtils.HIDE_READ_POSTS_AUTOMATICALLY_BASE, false)); } + // postType == PostPagingSource.TYPE_SEARCH public PostViewModel(Executor executor, Retrofit retrofit, @Nullable String accessToken, @NonNull String accountName, SharedPreferences sharedPreferences, SharedPreferences postFeedScrolledPositionSharedPreferences, @Nullable SharedPreferences postHistorySharedPreferences, String subredditName, String query, @@ -233,13 +278,17 @@ public class PostViewModel extends ViewModel { postFilter, readPostList); break; case PostPagingSource.TYPE_SUBREDDIT: - case PostPagingSource.TYPE_MULTI_REDDIT: case PostPagingSource.TYPE_ANONYMOUS_FRONT_PAGE: case PostPagingSource.TYPE_ANONYMOUS_MULTIREDDIT: paging3PagingSource = new PostPagingSource(executor, retrofit, accessToken, accountName, sharedPreferences, postFeedScrolledPositionSharedPreferences, name, postType, sortType, postFilter, readPostList); break; + case PostPagingSource.TYPE_MULTI_REDDIT: + paging3PagingSource = new PostPagingSource(executor, retrofit, accessToken, accountName, + sharedPreferences, postFeedScrolledPositionSharedPreferences, name, query, postType, + sortType, postFilter, readPostList); + break; case PostPagingSource.TYPE_SEARCH: paging3PagingSource = new PostPagingSource(executor, retrofit, accessToken, accountName, sharedPreferences, postFeedScrolledPositionSharedPreferences, name, query, trendingSource, @@ -285,6 +334,7 @@ public class PostViewModel extends ViewModel { private String userWhere; private List<String> readPostList; + // Front page public Factory(Executor executor, Retrofit retrofit, @Nullable String accessToken, @NonNull String accountName, SharedPreferences sharedPreferences, SharedPreferences postFeedScrolledPositionSharedPreferences, SharedPreferences postHistorySharedPreferences, int postType, SortType sortType, @@ -302,6 +352,7 @@ public class PostViewModel extends ViewModel { this.readPostList = readPostList; } + // PostPagingSource.TYPE_SUBREDDIT public Factory(Executor executor, Retrofit retrofit, @Nullable String accessToken, @NonNull String accountName, SharedPreferences sharedPreferences, SharedPreferences postFeedScrolledPositionSharedPreferences, SharedPreferences postHistorySharedPreferences, String name, int postType, SortType sortType, @@ -320,6 +371,26 @@ public class PostViewModel extends ViewModel { this.readPostList = readPostList; } + // PostPagingSource.TYPE_MULTI_REDDIT + public Factory(Executor executor, Retrofit retrofit, @Nullable String accessToken, @NonNull String accountName, + SharedPreferences sharedPreferences, SharedPreferences postFeedScrolledPositionSharedPreferences, + SharedPreferences postHistorySharedPreferences, String name, String query, int postType, SortType sortType, + PostFilter postFilter, List<String> readPostList) { + this.executor = executor; + this.retrofit = retrofit; + this.accessToken = accessToken; + this.accountName = accountName; + this.sharedPreferences = sharedPreferences; + this.postFeedScrolledPositionSharedPreferences = postFeedScrolledPositionSharedPreferences; + this.postHistorySharedPreferences = postHistorySharedPreferences; + this.name = name; + this.query = query; + this.postType = postType; + this.sortType = sortType; + this.postFilter = postFilter; + this.readPostList = readPostList; + } + //User posts public Factory(Executor executor, Retrofit retrofit, @Nullable String accessToken, @NonNull String accountName, SharedPreferences sharedPreferences, SharedPreferences postFeedScrolledPositionSharedPreferences, @@ -340,6 +411,7 @@ public class PostViewModel extends ViewModel { this.readPostList = readPostList; } + // PostPagingSource.TYPE_SEARCH public Factory(Executor executor, Retrofit retrofit, @Nullable String accessToken, @NonNull String accountName, SharedPreferences sharedPreferences, SharedPreferences postFeedScrolledPositionSharedPreferences, SharedPreferences postHistorySharedPreferences, String name, String query, String trendingSource, @@ -383,10 +455,14 @@ public class PostViewModel extends ViewModel { return (T) new PostViewModel(executor, retrofit, accessToken, accountName, sharedPreferences, postFeedScrolledPositionSharedPreferences, postHistorySharedPreferences, name, query, trendingSource, postType, sortType, postFilter, readPostList); - } else if (postType == PostPagingSource.TYPE_SUBREDDIT || postType == PostPagingSource.TYPE_MULTI_REDDIT) { + } else if (postType == PostPagingSource.TYPE_SUBREDDIT) { return (T) new PostViewModel(executor, retrofit, accessToken, accountName, sharedPreferences, postFeedScrolledPositionSharedPreferences, postHistorySharedPreferences, name, postType, sortType, postFilter, readPostList); + } else if (postType == PostPagingSource.TYPE_MULTI_REDDIT) { + return (T) new PostViewModel(executor, retrofit, accessToken, accountName, sharedPreferences, + postFeedScrolledPositionSharedPreferences, postHistorySharedPreferences, name, query, + postType, sortType, postFilter, readPostList); } else if (postType == PostPagingSource.TYPE_ANONYMOUS_FRONT_PAGE || postType == PostPagingSource.TYPE_ANONYMOUS_MULTIREDDIT) { return (T) new PostViewModel(executor, retrofit, null, null, sharedPreferences, null, null, name, postType, sortType, |