Continue supporting post filter.

This commit is contained in:
Alex Ning 2020-12-18 12:48:09 +08:00
parent 72fd7917af
commit c5cedba370
7 changed files with 273 additions and 126 deletions

View File

@ -1,21 +1,92 @@
package ml.docilealligator.infinityforreddit; package ml.docilealligator.infinityforreddit;
import java.util.ArrayList; import android.os.Parcel;
import android.os.Parcelable;
public class PostFilter { public class PostFilter implements Parcelable {
public int maxVote = -1; public int maxVote = -1;
public int minVote = -1; public int minVote = -1;
public int maxComments = -1; public int maxComments = -1;
public int minComments = -1; public int minComments = -1;
public int maxAwards = -1; public int maxAwards = -1;
public int minAwards = -1; public int minAwards = -1;
public boolean allowNSFW;
public boolean onlyNSFW; public boolean onlyNSFW;
public boolean onlySpoiler; public boolean onlySpoiler;
public String postTitleRegex; public String postTitleRegex;
public ArrayList<String> postTitleExcludesStrings; public String postTitleExcludesStrings;
public ArrayList<String> excludesSubreddits; public String excludesSubreddits;
public ArrayList<String> excludesUsers; public String excludesUsers;
public ArrayList<Flair> containsFlairs; public String containsFlairs;
public ArrayList<Flair> excludesFlairs; public String excludesFlairs;
public ArrayList<Integer> containsPostTypes; public boolean containsTextType;
public boolean containsLinkType;
public boolean containsImageType;
public boolean containsVideoType;
public PostFilter() {
}
protected PostFilter(Parcel in) {
maxVote = in.readInt();
minVote = in.readInt();
maxComments = in.readInt();
minComments = in.readInt();
maxAwards = in.readInt();
minAwards = in.readInt();
allowNSFW = in.readByte() != 0;
onlyNSFW = in.readByte() != 0;
onlySpoiler = in.readByte() != 0;
postTitleRegex = in.readString();
postTitleExcludesStrings = in.readString();
excludesSubreddits = in.readString();
excludesUsers = in.readString();
containsFlairs = in.readString();
excludesFlairs = in.readString();
containsTextType = in.readByte() != 0;
containsLinkType = in.readByte() != 0;
containsImageType = in.readByte() != 0;
containsVideoType = in.readByte() != 0;
}
public static final Creator<PostFilter> CREATOR = new Creator<PostFilter>() {
@Override
public PostFilter createFromParcel(Parcel in) {
return new PostFilter(in);
}
@Override
public PostFilter[] newArray(int size) {
return new PostFilter[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeInt(maxVote);
parcel.writeInt(minVote);
parcel.writeInt(maxComments);
parcel.writeInt(minComments);
parcel.writeInt(maxAwards);
parcel.writeInt(minAwards);
parcel.writeByte((byte) (allowNSFW ? 1 : 0));
parcel.writeByte((byte) (onlyNSFW ? 1 : 0));
parcel.writeByte((byte) (onlySpoiler ? 1 : 0));
parcel.writeString(postTitleRegex);
parcel.writeString(postTitleExcludesStrings);
parcel.writeString(excludesSubreddits);
parcel.writeString(excludesUsers);
parcel.writeString(containsFlairs);
parcel.writeString(excludesFlairs);
parcel.writeByte((byte) (containsTextType ? 1 : 0));
parcel.writeByte((byte) (containsLinkType ? 1 : 0));
parcel.writeByte((byte) (containsImageType ? 1 : 0));
parcel.writeByte((byte) (containsVideoType ? 1 : 0));
}
} }

View File

@ -1,5 +1,7 @@
package ml.docilealligator.infinityforreddit.activities; package ml.docilealligator.infinityforreddit.activities;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.res.ColorStateList; import android.content.res.ColorStateList;
import android.os.Build; import android.os.Build;
@ -26,6 +28,7 @@ import javax.inject.Named;
import butterknife.BindView; import butterknife.BindView;
import butterknife.ButterKnife; import butterknife.ButterKnife;
import ml.docilealligator.infinityforreddit.Infinity; import ml.docilealligator.infinityforreddit.Infinity;
import ml.docilealligator.infinityforreddit.PostFilter;
import ml.docilealligator.infinityforreddit.R; import ml.docilealligator.infinityforreddit.R;
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase; import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper; import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
@ -33,6 +36,8 @@ import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils;
public class CustomizePostFilterActivity extends BaseActivity { public class CustomizePostFilterActivity extends BaseActivity {
public static final String RETURN_EXTRA_POST_FILTER = "REPF";
@BindView(R.id.coordinator_layout_customize_post_filter_activity) @BindView(R.id.coordinator_layout_customize_post_filter_activity)
CoordinatorLayout coordinatorLayout; CoordinatorLayout coordinatorLayout;
@BindView(R.id.appbar_layout_customize_post_filter_activity) @BindView(R.id.appbar_layout_customize_post_filter_activity)
@ -233,7 +238,30 @@ public class CustomizePostFilterActivity extends BaseActivity {
finish(); finish();
return true; return true;
} else if (item.getItemId() == R.id.action_save_customize_post_filter_activity) { } else if (item.getItemId() == R.id.action_save_customize_post_filter_activity) {
PostFilter postFilter = new PostFilter();
postFilter.maxVote = maxVoteTextInputEditText.getText() == null ? -1 : Integer.parseInt(maxVoteTextInputEditText.getText().toString());
postFilter.minVote = minVoteTextInputEditText.getText() == null ? -1 : Integer.parseInt(minVoteTextInputEditText.getText().toString());
postFilter.maxComments = maxCommentsTextInputEditText.getText() == null ? -1 : Integer.parseInt(maxCommentsTextInputEditText.getText().toString());
postFilter.minComments = minCommentsTextInputEditText.getText() == null ? -1 : Integer.parseInt(minCommentsTextInputEditText.getText().toString());
postFilter.maxAwards = maxAwardsTextInputEditText.getText() == null ? -1 : Integer.parseInt(maxAwardsTextInputEditText.getText().toString());
postFilter.minAwards = minAwardsTextInputEditText.getText() == null ? -1 : Integer.parseInt(minAwardsTextInputEditText.getText().toString());
postFilter.postTitleRegex = titleExcludesRegexTextInputEditText.getText().toString();
postFilter.postTitleExcludesStrings = titleExcludesStringsTextInputEditText.getText().toString();
postFilter.excludesSubreddits = excludesSubredditsTextInputEditText.getText().toString();
postFilter.excludesUsers = excludesUsersTextInputEditText.getText().toString();
postFilter.excludesFlairs = excludesUsersTextInputEditText.getText().toString();
postFilter.containsFlairs = containsFlairsTextInputEditText.getText().toString();
postFilter.containsTextType = postTypeTextCheckBox.isChecked();
postFilter.containsLinkType = postTypeLinkCheckBox.isChecked();
postFilter.containsImageType = postTypeImageCheckBox.isChecked();
postFilter.containsVideoType = postTypeVideoCheckBox.isChecked();
Intent returnIntent = new Intent();
returnIntent.putExtra(RETURN_EXTRA_POST_FILTER, postFilter);
setResult(Activity.RESULT_OK, returnIntent);
finish();
return true;
} }
return false; return false;
} }

View File

@ -65,6 +65,7 @@ import ml.docilealligator.infinityforreddit.ActivityToolbarInterface;
import ml.docilealligator.infinityforreddit.FragmentCommunicator; import ml.docilealligator.infinityforreddit.FragmentCommunicator;
import ml.docilealligator.infinityforreddit.Infinity; import ml.docilealligator.infinityforreddit.Infinity;
import ml.docilealligator.infinityforreddit.NetworkState; import ml.docilealligator.infinityforreddit.NetworkState;
import ml.docilealligator.infinityforreddit.PostFilter;
import ml.docilealligator.infinityforreddit.R; import ml.docilealligator.infinityforreddit.R;
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase; import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
import ml.docilealligator.infinityforreddit.SortType; import ml.docilealligator.infinityforreddit.SortType;
@ -209,6 +210,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
private int maxPosition = -1; private int maxPosition = -1;
private int postLayout; private int postLayout;
private SortType sortType; private SortType sortType;
private PostFilter postFilter;
private ColorDrawable backgroundSwipeRight; private ColorDrawable backgroundSwipeRight;
private ColorDrawable backgroundSwipeLeft; private ColorDrawable backgroundSwipeLeft;
private Drawable drawableSwipeRight; private Drawable drawableSwipeRight;
@ -441,10 +443,13 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
postType = getArguments().getInt(EXTRA_POST_TYPE); postType = getArguments().getInt(EXTRA_POST_TYPE);
//TODO: Initialize PostFilter
postFilter = new PostFilter();
int filter = getArguments().getInt(EXTRA_FILTER); int filter = getArguments().getInt(EXTRA_FILTER);
String accessToken = getArguments().getString(EXTRA_ACCESS_TOKEN); String accessToken = getArguments().getString(EXTRA_ACCESS_TOKEN);
accountName = getArguments().getString(EXTRA_ACCOUNT_NAME); accountName = getArguments().getString(EXTRA_ACCOUNT_NAME);
boolean nsfw = mNsfwAndSpoilerSharedPreferences.getBoolean((accountName == null ? "" : accountName) + SharedPreferencesUtils.NSFW_BASE, false); postFilter.allowNSFW = mNsfwAndSpoilerSharedPreferences.getBoolean((accountName == null ? "" : accountName) + SharedPreferencesUtils.NSFW_BASE, false);
int defaultPostLayout = Integer.parseInt(mSharedPreferences.getString(SharedPreferencesUtils.DEFAULT_POST_LAYOUT_KEY, "0")); int defaultPostLayout = Integer.parseInt(mSharedPreferences.getString(SharedPreferencesUtils.DEFAULT_POST_LAYOUT_KEY, "0"));
savePostFeedScrolledPosition = mSharedPreferences.getBoolean(SharedPreferencesUtils.SAVE_FRONT_PAGE_SCROLLED_POSITION, false); savePostFeedScrolledPosition = mSharedPreferences.getBoolean(SharedPreferencesUtils.SAVE_FRONT_PAGE_SCROLLED_POSITION, false);
Locale locale = getResources().getConfiguration().locale; Locale locale = getResources().getConfiguration().locale;
@ -687,7 +692,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
if (accountName != null && !accountName.equals("")) { if (accountName != null && !accountName.equals("")) {
if (readPosts == null) { if (readPosts == null) {
if (getArguments().getBoolean(EXTRA_DISABLE_READ_POSTS, false)) { if (getArguments().getBoolean(EXTRA_DISABLE_READ_POSTS, false)) {
initializeAndBindPostViewModel(accessToken, locale, filter, nsfw); initializeAndBindPostViewModel(accessToken, locale, filter);
} else { } else {
FetchReadPosts.fetchReadPosts(mRedditDataRoomDatabase, accountName, FetchReadPosts.fetchReadPosts(mRedditDataRoomDatabase, accountName,
postType == PostDataSource.TYPE_SUBREDDIT && subredditName != null && (subredditName.equals("all") || subredditName.equals("popular")), postType == PostDataSource.TYPE_SUBREDDIT && subredditName != null && (subredditName.equals("all") || subredditName.equals("popular")),
@ -695,15 +700,15 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
if (activity != null && !activity.isFinishing() && !activity.isDestroyed()) { if (activity != null && !activity.isFinishing() && !activity.isDestroyed()) {
this.readPosts = readPosts; this.readPosts = readPosts;
this.subredditFilterList = subredditFilters; this.subredditFilterList = subredditFilters;
initializeAndBindPostViewModel(accessToken, locale, filter, nsfw); initializeAndBindPostViewModel(accessToken, locale, filter);
} }
}); });
} }
} else { } else {
initializeAndBindPostViewModel(accessToken, locale, filter, nsfw); initializeAndBindPostViewModel(accessToken, locale, filter);
} }
} else { } else {
initializeAndBindPostViewModelForAnonymous(accessToken, locale, filter, nsfw); initializeAndBindPostViewModelForAnonymous(accessToken, locale, filter);
} }
vibrateWhenActionTriggered = mSharedPreferences.getBoolean(SharedPreferencesUtils.VIBRATE_WHEN_ACTION_TRIGGERED, true); vibrateWhenActionTriggered = mSharedPreferences.getBoolean(SharedPreferencesUtils.VIBRATE_WHEN_ACTION_TRIGGERED, true);
@ -815,57 +820,65 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
return rootView; return rootView;
} }
private void initializeAndBindPostViewModel(String accessToken, Locale locale, int filter, boolean nsfw) { private void initializeAndBindPostViewModel(String accessToken, Locale locale, int filter) {
if (postType == PostDataSource.TYPE_SEARCH) { if (postType == PostDataSource.TYPE_SEARCH) {
mPostViewModel = new ViewModelProvider(PostFragment.this, new PostViewModel.Factory(accessToken == null ? mRetrofit : mOauthRetrofit, accessToken, mPostViewModel = new ViewModelProvider(PostFragment.this, new PostViewModel.Factory(accessToken == null ? mRetrofit : mOauthRetrofit, accessToken,
accountName, locale, mSharedPreferences, accountName, locale, mSharedPreferences,
postFeedScrolledPositionSharedPreferences, subredditName, query, postType, sortType, filter, nsfw, readPosts)).get(PostViewModel.class); postFeedScrolledPositionSharedPreferences, subredditName, query, postType, sortType,
postFilter, filter, readPosts)).get(PostViewModel.class);
} else if (postType == PostDataSource.TYPE_SUBREDDIT) { } else if (postType == PostDataSource.TYPE_SUBREDDIT) {
if (subredditName.equals("all") || subredditName.equals("popular")) { if (subredditName.equals("all") || subredditName.equals("popular")) {
mPostViewModel = new ViewModelProvider(PostFragment.this, new PostViewModel.Factory(accessToken == null ? mRetrofit : mOauthRetrofit, accessToken, mPostViewModel = new ViewModelProvider(PostFragment.this, new PostViewModel.Factory(accessToken == null ? mRetrofit : mOauthRetrofit, accessToken,
accountName, locale, mSharedPreferences, accountName, locale, mSharedPreferences,
postFeedScrolledPositionSharedPreferences, subredditName, postType, sortType, filter, nsfw, readPosts, subredditFilterList)).get(PostViewModel.class); postFeedScrolledPositionSharedPreferences, subredditName, postType, sortType,
postFilter, filter, readPosts, subredditFilterList)).get(PostViewModel.class);
} else { } else {
mPostViewModel = new ViewModelProvider(PostFragment.this, new PostViewModel.Factory(accessToken == null ? mRetrofit : mOauthRetrofit, accessToken, mPostViewModel = new ViewModelProvider(PostFragment.this, new PostViewModel.Factory(accessToken == null ? mRetrofit : mOauthRetrofit, accessToken,
accountName, locale, mSharedPreferences, accountName, locale, mSharedPreferences,
postFeedScrolledPositionSharedPreferences, subredditName, postType, sortType, filter, nsfw, readPosts)).get(PostViewModel.class); postFeedScrolledPositionSharedPreferences, subredditName, postType, sortType,
postFilter, filter, readPosts)).get(PostViewModel.class);
} }
} else if (postType == PostDataSource.TYPE_MULTI_REDDIT) { } else if (postType == PostDataSource.TYPE_MULTI_REDDIT) {
mPostViewModel = new ViewModelProvider(PostFragment.this, new PostViewModel.Factory(accessToken == null ? mRetrofit : mOauthRetrofit, accessToken, mPostViewModel = new ViewModelProvider(PostFragment.this, new PostViewModel.Factory(accessToken == null ? mRetrofit : mOauthRetrofit, accessToken,
accountName, locale, mSharedPreferences, accountName, locale, mSharedPreferences,
postFeedScrolledPositionSharedPreferences, multiRedditPath, postType, sortType, filter, nsfw, readPosts)).get(PostViewModel.class); postFeedScrolledPositionSharedPreferences, multiRedditPath, postType, sortType,
postFilter, filter, readPosts)).get(PostViewModel.class);
} else if (postType == PostDataSource.TYPE_USER) { } else if (postType == PostDataSource.TYPE_USER) {
mPostViewModel = new ViewModelProvider(PostFragment.this, new PostViewModel.Factory(accessToken == null ? mRetrofit : mOauthRetrofit, accessToken, mPostViewModel = new ViewModelProvider(PostFragment.this, new PostViewModel.Factory(accessToken == null ? mRetrofit : mOauthRetrofit, accessToken,
accountName, locale, mSharedPreferences, accountName, locale, mSharedPreferences,
postFeedScrolledPositionSharedPreferences, username, postType, sortType, where, filter, nsfw, readPosts)).get(PostViewModel.class); postFeedScrolledPositionSharedPreferences, username, postType, sortType, postFilter,
where, filter, readPosts)).get(PostViewModel.class);
} else { } else {
mPostViewModel = new ViewModelProvider(PostFragment.this, new PostViewModel.Factory(mOauthRetrofit, accessToken, mPostViewModel = new ViewModelProvider(PostFragment.this, new PostViewModel.Factory(mOauthRetrofit, accessToken,
accountName, locale, mSharedPreferences, postFeedScrolledPositionSharedPreferences, accountName, locale, mSharedPreferences, postFeedScrolledPositionSharedPreferences,
postType, sortType, filter, nsfw, readPosts)).get(PostViewModel.class); postType, sortType, postFilter, filter, readPosts)).get(PostViewModel.class);
} }
bindPostViewModel(); bindPostViewModel();
} }
private void initializeAndBindPostViewModelForAnonymous(String accessToken, Locale locale, int filter, boolean nsfw) { private void initializeAndBindPostViewModelForAnonymous(String accessToken, Locale locale, int filter) {
//For anonymous user //For anonymous user
if (postType == PostDataSource.TYPE_SEARCH) { if (postType == PostDataSource.TYPE_SEARCH) {
mPostViewModel = new ViewModelProvider(PostFragment.this, new PostViewModel.Factory(accessToken == null ? mRetrofit : mOauthRetrofit, accessToken, mPostViewModel = new ViewModelProvider(PostFragment.this, new PostViewModel.Factory(accessToken == null ? mRetrofit : mOauthRetrofit, accessToken,
accountName, locale, mSharedPreferences, accountName, locale, mSharedPreferences,
postFeedScrolledPositionSharedPreferences, subredditName, query, postType, sortType, filter, nsfw, readPosts)).get(PostViewModel.class); postFeedScrolledPositionSharedPreferences, subredditName, query, postType, sortType,
postFilter, filter, readPosts)).get(PostViewModel.class);
} else if (postType == PostDataSource.TYPE_SUBREDDIT) { } else if (postType == PostDataSource.TYPE_SUBREDDIT) {
if (subredditName.equals("all") || subredditName.equals("popular")) { if (subredditName.equals("all") || subredditName.equals("popular")) {
if (subredditFilterList != null) { if (subredditFilterList != null) {
mPostViewModel = new ViewModelProvider(this, new PostViewModel.Factory(accessToken == null ? mRetrofit : mOauthRetrofit, accessToken, mPostViewModel = new ViewModelProvider(this, new PostViewModel.Factory(accessToken == null ? mRetrofit : mOauthRetrofit, accessToken,
accountName, locale, mSharedPreferences, accountName, locale, mSharedPreferences,
postFeedScrolledPositionSharedPreferences, subredditName, postType, sortType, filter, nsfw, readPosts, subredditFilterList)).get(PostViewModel.class); postFeedScrolledPositionSharedPreferences, subredditName, postType, sortType,
postFilter, filter, readPosts, subredditFilterList)).get(PostViewModel.class);
} else { } else {
FetchSubredditFilters.fetchSubredditFilters(mRedditDataRoomDatabase, subredditFilters -> { FetchSubredditFilters.fetchSubredditFilters(mRedditDataRoomDatabase, subredditFilters -> {
if (activity != null && !activity.isFinishing() && !activity.isDestroyed()) { if (activity != null && !activity.isFinishing() && !activity.isDestroyed()) {
subredditFilterList = subredditFilters; subredditFilterList = subredditFilters;
mPostViewModel = new ViewModelProvider(PostFragment.this, new PostViewModel.Factory(accessToken == null ? mRetrofit : mOauthRetrofit, accessToken, mPostViewModel = new ViewModelProvider(PostFragment.this, new PostViewModel.Factory(accessToken == null ? mRetrofit : mOauthRetrofit, accessToken,
accountName, locale, mSharedPreferences, accountName, locale, mSharedPreferences,
postFeedScrolledPositionSharedPreferences, subredditName, postType, sortType, filter, nsfw, readPosts, subredditFilterList)).get(PostViewModel.class); postFeedScrolledPositionSharedPreferences, subredditName, postType,
sortType, postFilter, filter, readPosts, subredditFilterList)).get(PostViewModel.class);
bindPostViewModel(); bindPostViewModel();
} }
@ -874,20 +887,23 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
} else { } else {
mPostViewModel = new ViewModelProvider(PostFragment.this, new PostViewModel.Factory(accessToken == null ? mRetrofit : mOauthRetrofit, accessToken, mPostViewModel = new ViewModelProvider(PostFragment.this, new PostViewModel.Factory(accessToken == null ? mRetrofit : mOauthRetrofit, accessToken,
accountName, locale, mSharedPreferences, accountName, locale, mSharedPreferences,
postFeedScrolledPositionSharedPreferences, subredditName, postType, sortType, filter, nsfw, readPosts)).get(PostViewModel.class); postFeedScrolledPositionSharedPreferences, subredditName, postType, sortType, postFilter,
filter, readPosts)).get(PostViewModel.class);
} }
} else if (postType == PostDataSource.TYPE_MULTI_REDDIT) { } else if (postType == PostDataSource.TYPE_MULTI_REDDIT) {
mPostViewModel = new ViewModelProvider(PostFragment.this, new PostViewModel.Factory(accessToken == null ? mRetrofit : mOauthRetrofit, accessToken, mPostViewModel = new ViewModelProvider(PostFragment.this, new PostViewModel.Factory(accessToken == null ? mRetrofit : mOauthRetrofit, accessToken,
accountName, locale, mSharedPreferences, accountName, locale, mSharedPreferences,
postFeedScrolledPositionSharedPreferences, multiRedditPath, postType, sortType, filter, nsfw, readPosts)).get(PostViewModel.class); postFeedScrolledPositionSharedPreferences, multiRedditPath, postType, sortType, postFilter,
filter, readPosts)).get(PostViewModel.class);
} else if (postType == PostDataSource.TYPE_USER) { } else if (postType == PostDataSource.TYPE_USER) {
mPostViewModel = new ViewModelProvider(PostFragment.this, new PostViewModel.Factory(accessToken == null ? mRetrofit : mOauthRetrofit, accessToken, mPostViewModel = new ViewModelProvider(PostFragment.this, new PostViewModel.Factory(accessToken == null ? mRetrofit : mOauthRetrofit, accessToken,
accountName, locale, mSharedPreferences, accountName, locale, mSharedPreferences,
postFeedScrolledPositionSharedPreferences, username, postType, sortType, where, filter, nsfw, readPosts)).get(PostViewModel.class); postFeedScrolledPositionSharedPreferences, username, postType, sortType, postFilter,
where, filter, readPosts)).get(PostViewModel.class);
} else { } else {
mPostViewModel = new ViewModelProvider(PostFragment.this, new PostViewModel.Factory(mOauthRetrofit, accessToken, mPostViewModel = new ViewModelProvider(PostFragment.this, new PostViewModel.Factory(mOauthRetrofit, accessToken,
accountName, locale, mSharedPreferences, postFeedScrolledPositionSharedPreferences, accountName, locale, mSharedPreferences, postFeedScrolledPositionSharedPreferences,
postType, sortType, filter, nsfw, readPosts)).get(PostViewModel.class); postType, sortType, postFilter, filter, readPosts)).get(PostViewModel.class);
} }
if (mPostViewModel != null) { if (mPostViewModel != null) {
@ -1060,7 +1076,8 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
@Override @Override
public void changeNSFW(boolean nsfw) { public void changeNSFW(boolean nsfw) {
mPostViewModel.changeNSFW(nsfw); postFilter.allowNSFW = nsfw;
mPostViewModel.changePostFilter(postFilter);
} }
@Override @Override

View File

@ -12,6 +12,7 @@ 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.PostFilter;
import ml.docilealligator.infinityforreddit.SortType; import ml.docilealligator.infinityforreddit.SortType;
import ml.docilealligator.infinityforreddit.apis.RedditAPI; import ml.docilealligator.infinityforreddit.apis.RedditAPI;
import ml.docilealligator.infinityforreddit.readpost.ReadPost; import ml.docilealligator.infinityforreddit.readpost.ReadPost;
@ -47,7 +48,7 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
private String query; private String query;
private int postType; private int postType;
private SortType sortType; private SortType sortType;
private boolean nsfw; private PostFilter postFilter;
private int filter; private int filter;
private List<ReadPost> readPostList; private List<ReadPost> readPostList;
private List<SubredditFilter> subredditFilterList; private List<SubredditFilter> subredditFilterList;
@ -63,8 +64,9 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
private LoadCallback<String, Post> callback; private LoadCallback<String, Post> callback;
PostDataSource(Retrofit retrofit, String accessToken, String accountName, Locale locale, PostDataSource(Retrofit retrofit, String accessToken, String accountName, Locale locale,
SharedPreferences sharedPreferences, SharedPreferences postFeedScrolledPositionSharedPreferences, int postType, SharedPreferences sharedPreferences,
SortType sortType, int filter, boolean nsfw, List<ReadPost> readPostList) { SharedPreferences postFeedScrolledPositionSharedPreferences, int postType,
SortType sortType, PostFilter postFilter, int filter, List<ReadPost> readPostList) {
this.retrofit = retrofit; this.retrofit = retrofit;
this.accessToken = accessToken; this.accessToken = accessToken;
this.accountName = accountName; this.accountName = accountName;
@ -76,16 +78,16 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
hasPostLiveData = new MutableLiveData<>(); hasPostLiveData = new MutableLiveData<>();
this.postType = postType; this.postType = postType;
this.sortType = sortType == null ? new SortType(SortType.Type.BEST) : sortType; this.sortType = sortType == null ? new SortType(SortType.Type.BEST) : sortType;
this.postFilter = postFilter;
this.filter = filter; this.filter = filter;
this.nsfw = nsfw;
this.readPostList = readPostList; this.readPostList = readPostList;
postLinkedHashSet = new LinkedHashSet<>(); postLinkedHashSet = new LinkedHashSet<>();
} }
PostDataSource(Retrofit retrofit, String accessToken, String accountName, Locale locale, PostDataSource(Retrofit retrofit, String accessToken, String accountName, Locale locale,
SharedPreferences sharedPreferences, SharedPreferences postFeedScrolledPositionSharedPreferences, SharedPreferences sharedPreferences, SharedPreferences postFeedScrolledPositionSharedPreferences,
String path, int postType, SortType sortType, int filter, boolean nsfw, List<ReadPost> readPostList, String path, int postType, SortType sortType, PostFilter postFilter, int filter,
List<SubredditFilter> subredditFilterList) { List<ReadPost> readPostList, List<SubredditFilter> subredditFilterList) {
this.retrofit = retrofit; this.retrofit = retrofit;
this.accessToken = accessToken; this.accessToken = accessToken;
this.accountName = accountName; this.accountName = accountName;
@ -118,16 +120,17 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
} else { } else {
this.sortType = sortType; this.sortType = sortType;
} }
this.postFilter = postFilter;
this.filter = filter; this.filter = filter;
this.nsfw = nsfw;
this.readPostList = readPostList; this.readPostList = readPostList;
this.subredditFilterList = subredditFilterList; this.subredditFilterList = subredditFilterList;
postLinkedHashSet = new LinkedHashSet<>(); postLinkedHashSet = new LinkedHashSet<>();
} }
PostDataSource(Retrofit retrofit, String accessToken, String accountName, Locale locale, PostDataSource(Retrofit retrofit, String accessToken, String accountName, Locale locale,
SharedPreferences sharedPreferences, SharedPreferences postFeedScrolledPositionSharedPreferences, String subredditOrUserName, SharedPreferences sharedPreferences, SharedPreferences postFeedScrolledPositionSharedPreferences,
int postType, SortType sortType, String where, int filter, boolean nsfw, List<ReadPost> readPostList) { String subredditOrUserName, int postType, SortType sortType, PostFilter postFilter,
String where, int filter, List<ReadPost> readPostList) {
this.retrofit = retrofit; this.retrofit = retrofit;
this.accessToken = accessToken; this.accessToken = accessToken;
this.accountName = accountName; this.accountName = accountName;
@ -140,17 +143,17 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
hasPostLiveData = new MutableLiveData<>(); hasPostLiveData = new MutableLiveData<>();
this.postType = postType; this.postType = postType;
this.sortType = sortType == null ? new SortType(SortType.Type.NEW) : sortType; this.sortType = sortType == null ? new SortType(SortType.Type.NEW) : sortType;
this.postFilter = postFilter;
userWhere = where; userWhere = where;
this.filter = filter; this.filter = filter;
this.nsfw = nsfw;
this.readPostList = readPostList; this.readPostList = readPostList;
postLinkedHashSet = new LinkedHashSet<>(); postLinkedHashSet = new LinkedHashSet<>();
} }
PostDataSource(Retrofit retrofit, String accessToken, String accountName, Locale locale, PostDataSource(Retrofit retrofit, String accessToken, String accountName, Locale locale,
SharedPreferences sharedPreferences, SharedPreferences postFeedScrolledPositionSharedPreferences, SharedPreferences sharedPreferences, SharedPreferences postFeedScrolledPositionSharedPreferences,
String subredditOrUserName, String query, int postType, SortType sortType, int filter, String subredditOrUserName, String query, int postType, SortType sortType, PostFilter postFilter,
boolean nsfw, List<ReadPost> readPostList) { int filter, List<ReadPost> readPostList) {
this.retrofit = retrofit; this.retrofit = retrofit;
this.accessToken = accessToken; this.accessToken = accessToken;
this.accountName = accountName; this.accountName = accountName;
@ -164,8 +167,8 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
hasPostLiveData = new MutableLiveData<>(); hasPostLiveData = new MutableLiveData<>();
this.postType = postType; this.postType = postType;
this.sortType = sortType == null ? new SortType(SortType.Type.RELEVANCE) : sortType; this.sortType = sortType == null ? new SortType(SortType.Type.RELEVANCE) : sortType;
this.postFilter = postFilter;
this.filter = filter; this.filter = filter;
this.nsfw = nsfw;
postLinkedHashSet = new LinkedHashSet<>(); postLinkedHashSet = new LinkedHashSet<>();
this.readPostList = readPostList; this.readPostList = readPostList;
} }
@ -258,7 +261,7 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
@Override @Override
public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) { public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) {
if (response.isSuccessful()) { if (response.isSuccessful()) {
ParsePost.parsePosts(response.body(), -1, filter, nsfw, readPostList, ParsePost.parsePosts(response.body(), -1, filter, postFilter.allowNSFW, readPostList,
new ParsePost.ParsePostsListingListener() { new ParsePost.ParsePostsListingListener() {
@Override @Override
public void onParsePostsListingSuccess(LinkedHashSet<Post> newPosts, String lastItem) { public void onParsePostsListingSuccess(LinkedHashSet<Post> newPosts, String lastItem) {
@ -321,7 +324,7 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
@Override @Override
public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) { public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) {
if (response.isSuccessful()) { if (response.isSuccessful()) {
ParsePost.parsePosts(response.body(), -1, filter, nsfw, readPostList, ParsePost.parsePosts(response.body(), -1, filter, postFilter.allowNSFW, readPostList,
new ParsePost.ParsePostsListingListener() { new ParsePost.ParsePostsListingListener() {
@Override @Override
public void onParsePostsListingSuccess(LinkedHashSet<Post> newPosts, String lastItem) { public void onParsePostsListingSuccess(LinkedHashSet<Post> newPosts, String lastItem) {
@ -381,7 +384,7 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
@Override @Override
public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) { public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) {
if (response.isSuccessful()) { if (response.isSuccessful()) {
ParsePost.parsePosts(response.body(), -1, filter, nsfw, readPostList, subredditFilterList, ParsePost.parsePosts(response.body(), -1, filter, postFilter.allowNSFW, readPostList, subredditFilterList,
new ParsePost.ParsePostsListingListener() { new ParsePost.ParsePostsListingListener() {
@Override @Override
public void onParsePostsListingSuccess(LinkedHashSet<Post> newPosts, String lastItem) { public void onParsePostsListingSuccess(LinkedHashSet<Post> newPosts, String lastItem) {
@ -455,7 +458,7 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
@Override @Override
public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) { public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) {
if (response.isSuccessful()) { if (response.isSuccessful()) {
ParsePost.parsePosts(response.body(), -1, filter, nsfw, readPostList, subredditFilterList, ParsePost.parsePosts(response.body(), -1, filter, postFilter.allowNSFW, readPostList, subredditFilterList,
new ParsePost.ParsePostsListingListener() { new ParsePost.ParsePostsListingListener() {
@Override @Override
public void onParsePostsListingSuccess(LinkedHashSet<Post> newPosts, String lastItem) { public void onParsePostsListingSuccess(LinkedHashSet<Post> newPosts, String lastItem) {
@ -516,7 +519,7 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
@Override @Override
public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) { public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) {
if (response.isSuccessful()) { if (response.isSuccessful()) {
ParsePost.parsePosts(response.body(), -1, filter, nsfw, readPostList, ParsePost.parsePosts(response.body(), -1, filter, postFilter.allowNSFW, readPostList,
new ParsePost.ParsePostsListingListener() { new ParsePost.ParsePostsListingListener() {
@Override @Override
public void onParsePostsListingSuccess(LinkedHashSet<Post> newPosts, String lastItem) { public void onParsePostsListingSuccess(LinkedHashSet<Post> newPosts, String lastItem) {
@ -587,7 +590,7 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
@Override @Override
public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) { public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) {
if (response.isSuccessful()) { if (response.isSuccessful()) {
ParsePost.parsePosts(response.body(), -1, filter, nsfw, readPostList, ParsePost.parsePosts(response.body(), -1, filter, postFilter.allowNSFW, readPostList,
new ParsePost.ParsePostsListingListener() { new ParsePost.ParsePostsListingListener() {
@Override @Override
public void onParsePostsListingSuccess(LinkedHashSet<Post> newPosts, String lastItem) { public void onParsePostsListingSuccess(LinkedHashSet<Post> newPosts, String lastItem) {
@ -670,7 +673,7 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
@Override @Override
public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) { public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) {
if (response.isSuccessful()) { if (response.isSuccessful()) {
ParsePost.parsePosts(response.body(), -1, filter, nsfw, readPostList, ParsePost.parsePosts(response.body(), -1, filter, postFilter.allowNSFW, readPostList,
new ParsePost.ParsePostsListingListener() { new ParsePost.ParsePostsListingListener() {
@Override @Override
public void onParsePostsListingSuccess(LinkedHashSet<Post> newPosts, String lastItem) { public void onParsePostsListingSuccess(LinkedHashSet<Post> newPosts, String lastItem) {
@ -761,7 +764,7 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
@Override @Override
public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) { public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) {
if (response.isSuccessful()) { if (response.isSuccessful()) {
ParsePost.parsePosts(response.body(), -1, filter, nsfw, readPostList, ParsePost.parsePosts(response.body(), -1, filter, postFilter.allowNSFW, readPostList,
new ParsePost.ParsePostsListingListener() { new ParsePost.ParsePostsListingListener() {
@Override @Override
public void onParsePostsListingSuccess(LinkedHashSet<Post> newPosts, String lastItem) { public void onParsePostsListingSuccess(LinkedHashSet<Post> newPosts, String lastItem) {
@ -821,7 +824,7 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
@Override @Override
public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) { public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) {
if (response.isSuccessful()) { if (response.isSuccessful()) {
ParsePost.parsePosts(response.body(), -1, filter, nsfw, readPostList, ParsePost.parsePosts(response.body(), -1, filter, postFilter.allowNSFW, readPostList,
new ParsePost.ParsePostsListingListener() { new ParsePost.ParsePostsListingListener() {
@Override @Override
public void onParsePostsListingSuccess(LinkedHashSet<Post> newPosts, String lastItem) { public void onParsePostsListingSuccess(LinkedHashSet<Post> newPosts, String lastItem) {
@ -892,7 +895,7 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
@Override @Override
public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) { public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) {
if (response.isSuccessful()) { if (response.isSuccessful()) {
ParsePost.parsePosts(response.body(), -1, filter, nsfw, readPostList, ParsePost.parsePosts(response.body(), -1, filter, postFilter.allowNSFW, readPostList,
new ParsePost.ParsePostsListingListener() { new ParsePost.ParsePostsListingListener() {
@Override @Override
public void onParsePostsListingSuccess(LinkedHashSet<Post> newPosts, String lastItem) { public void onParsePostsListingSuccess(LinkedHashSet<Post> newPosts, String lastItem) {

View File

@ -9,6 +9,7 @@ import androidx.paging.DataSource;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import ml.docilealligator.infinityforreddit.PostFilter;
import ml.docilealligator.infinityforreddit.SortType; import ml.docilealligator.infinityforreddit.SortType;
import ml.docilealligator.infinityforreddit.readpost.ReadPost; import ml.docilealligator.infinityforreddit.readpost.ReadPost;
import ml.docilealligator.infinityforreddit.subredditfilter.SubredditFilter; import ml.docilealligator.infinityforreddit.subredditfilter.SubredditFilter;
@ -25,9 +26,9 @@ class PostDataSourceFactory extends DataSource.Factory {
private String query; private String query;
private int postType; private int postType;
private SortType sortType; private SortType sortType;
private PostFilter postFilter;
private String userWhere; private String userWhere;
private int filter; private int filter;
private boolean nsfw;
private List<ReadPost> readPostList; private List<ReadPost> readPostList;
private List<SubredditFilter> subredditFilterList; private List<SubredditFilter> subredditFilterList;
@ -37,7 +38,7 @@ class PostDataSourceFactory extends DataSource.Factory {
PostDataSourceFactory(Retrofit retrofit, String accessToken, String accountName, Locale locale, PostDataSourceFactory(Retrofit retrofit, String accessToken, String accountName, Locale locale,
SharedPreferences sharedPreferences, SharedPreferences sharedPreferences,
SharedPreferences postFeedScrolledPositionSharedPreferences, int postType, SharedPreferences postFeedScrolledPositionSharedPreferences, int postType,
SortType sortType, int filter, boolean nsfw, List<ReadPost> readPostList) { SortType sortType, PostFilter postFilter, int filter, List<ReadPost> readPostList) {
this.retrofit = retrofit; this.retrofit = retrofit;
this.accessToken = accessToken; this.accessToken = accessToken;
this.accountName = accountName; this.accountName = accountName;
@ -47,15 +48,15 @@ class PostDataSourceFactory extends DataSource.Factory {
postDataSourceLiveData = new MutableLiveData<>(); postDataSourceLiveData = new MutableLiveData<>();
this.postType = postType; this.postType = postType;
this.sortType = sortType; this.sortType = sortType;
this.postFilter = postFilter;
this.filter = filter; this.filter = filter;
this.nsfw = nsfw;
this.readPostList = readPostList; this.readPostList = readPostList;
} }
PostDataSourceFactory(Retrofit retrofit, String accessToken, String accountName, Locale locale, PostDataSourceFactory(Retrofit retrofit, String accessToken, String accountName, Locale locale,
SharedPreferences sharedPreferences, SharedPreferences postFeedScrolledPositionSharedPreferences, SharedPreferences sharedPreferences, SharedPreferences postFeedScrolledPositionSharedPreferences,
String subredditName, int postType, SortType sortType, int filter, boolean nsfw, String subredditName, int postType, SortType sortType, PostFilter postFilter,
List<ReadPost> readPostList, List<SubredditFilter> subredditFilterList) { int filter, List<ReadPost> readPostList, List<SubredditFilter> subredditFilterList) {
this.retrofit = retrofit; this.retrofit = retrofit;
this.accessToken = accessToken; this.accessToken = accessToken;
this.accountName = accountName; this.accountName = accountName;
@ -66,16 +67,16 @@ class PostDataSourceFactory extends DataSource.Factory {
postDataSourceLiveData = new MutableLiveData<>(); postDataSourceLiveData = new MutableLiveData<>();
this.postType = postType; this.postType = postType;
this.sortType = sortType; this.sortType = sortType;
this.postFilter = postFilter;
this.filter = filter; this.filter = filter;
this.nsfw = nsfw;
this.readPostList = readPostList; this.readPostList = readPostList;
this.subredditFilterList = subredditFilterList; this.subredditFilterList = subredditFilterList;
} }
PostDataSourceFactory(Retrofit retrofit, String accessToken, String accountName, Locale locale, PostDataSourceFactory(Retrofit retrofit, String accessToken, String accountName, Locale locale,
SharedPreferences sharedPreferences, SharedPreferences postFeedScrolledPositionSharedPreferences, SharedPreferences sharedPreferences, SharedPreferences postFeedScrolledPositionSharedPreferences,
String subredditName, int postType, SortType sortType, String where, int filter, String subredditName, int postType, SortType sortType, PostFilter postFilter,
boolean nsfw, List<ReadPost> readPostList) { String where, int filter, List<ReadPost> readPostList) {
this.retrofit = retrofit; this.retrofit = retrofit;
this.accessToken = accessToken; this.accessToken = accessToken;
this.accountName = accountName; this.accountName = accountName;
@ -86,16 +87,16 @@ class PostDataSourceFactory extends DataSource.Factory {
postDataSourceLiveData = new MutableLiveData<>(); postDataSourceLiveData = new MutableLiveData<>();
this.postType = postType; this.postType = postType;
this.sortType = sortType; this.sortType = sortType;
this.postFilter = postFilter;
userWhere = where; userWhere = where;
this.filter = filter; this.filter = filter;
this.nsfw = nsfw;
this.readPostList = readPostList; this.readPostList = readPostList;
} }
PostDataSourceFactory(Retrofit retrofit, String accessToken, String accountName, Locale locale, PostDataSourceFactory(Retrofit retrofit, String accessToken, String accountName, Locale locale,
SharedPreferences sharedPreferences, SharedPreferences postFeedScrolledPositionSharedPreferences, SharedPreferences sharedPreferences, SharedPreferences postFeedScrolledPositionSharedPreferences,
String subredditName, String query, int postType, SortType sortType, int filter, String subredditName, String query, int postType, SortType sortType, PostFilter postFilter,
boolean nsfw, List<ReadPost> readPostList) { int filter, List<ReadPost> readPostList) {
this.retrofit = retrofit; this.retrofit = retrofit;
this.accessToken = accessToken; this.accessToken = accessToken;
this.accountName = accountName; this.accountName = accountName;
@ -107,8 +108,8 @@ class PostDataSourceFactory extends DataSource.Factory {
postDataSourceLiveData = new MutableLiveData<>(); postDataSourceLiveData = new MutableLiveData<>();
this.postType = postType; this.postType = postType;
this.sortType = sortType; this.sortType = sortType;
this.postFilter = postFilter;
this.filter = filter; this.filter = filter;
this.nsfw = nsfw;
this.readPostList = readPostList; this.readPostList = readPostList;
} }
@ -117,20 +118,20 @@ class PostDataSourceFactory extends DataSource.Factory {
public DataSource<String, Post> create() { public DataSource<String, Post> create() {
if (postType == PostDataSource.TYPE_FRONT_PAGE) { if (postType == PostDataSource.TYPE_FRONT_PAGE) {
postDataSource = new PostDataSource(retrofit, accessToken, accountName, locale, postDataSource = new PostDataSource(retrofit, accessToken, accountName, locale,
sharedPreferences, postFeedScrolledPositionSharedPreferences, postType, sortType, filter, sharedPreferences, postFeedScrolledPositionSharedPreferences, postType, sortType,
nsfw, readPostList); postFilter, filter, readPostList);
} else if (postType == PostDataSource.TYPE_SEARCH) { } else if (postType == PostDataSource.TYPE_SEARCH) {
postDataSource = new PostDataSource(retrofit, accessToken, accountName, locale, postDataSource = new PostDataSource(retrofit, accessToken, accountName, locale,
sharedPreferences, postFeedScrolledPositionSharedPreferences, subredditName, query, sharedPreferences, postFeedScrolledPositionSharedPreferences, subredditName, query,
postType, sortType, filter, nsfw, readPostList); postType, sortType, postFilter, filter, readPostList);
} else if (postType == PostDataSource.TYPE_SUBREDDIT || postType == PostDataSource.TYPE_MULTI_REDDIT) { } else if (postType == PostDataSource.TYPE_SUBREDDIT || postType == PostDataSource.TYPE_MULTI_REDDIT) {
postDataSource = new PostDataSource(retrofit, accessToken, accountName, locale, postDataSource = new PostDataSource(retrofit, accessToken, accountName, locale,
sharedPreferences, postFeedScrolledPositionSharedPreferences, subredditName, postType, sharedPreferences, postFeedScrolledPositionSharedPreferences, subredditName, postType,
sortType, filter, nsfw, readPostList, subredditFilterList); sortType, postFilter, filter, readPostList, subredditFilterList);
} else { } else {
postDataSource = new PostDataSource(retrofit, accessToken, accountName, locale, postDataSource = new PostDataSource(retrofit, accessToken, accountName, locale,
sharedPreferences, postFeedScrolledPositionSharedPreferences, subredditName, postType, sharedPreferences, postFeedScrolledPositionSharedPreferences, subredditName, postType,
sortType, userWhere, filter, nsfw, readPostList); sortType, postFilter, userWhere, filter, readPostList);
} }
postDataSourceLiveData.postValue(postDataSource); postDataSourceLiveData.postValue(postDataSource);
@ -145,8 +146,8 @@ class PostDataSourceFactory extends DataSource.Factory {
return postDataSource; return postDataSource;
} }
void changeNSFWAndSortType(boolean nsfw, SortType sortType) { void changeSortTypeAndPostFilter(SortType sortType, PostFilter postFilter) {
this.nsfw = nsfw;
this.sortType = sortType; this.sortType = sortType;
this.postFilter = postFilter;
} }
} }

View File

@ -17,6 +17,7 @@ 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.PostFilter;
import ml.docilealligator.infinityforreddit.SortType; import ml.docilealligator.infinityforreddit.SortType;
import ml.docilealligator.infinityforreddit.readpost.ReadPost; import ml.docilealligator.infinityforreddit.readpost.ReadPost;
import ml.docilealligator.infinityforreddit.subredditfilter.SubredditFilter; import ml.docilealligator.infinityforreddit.subredditfilter.SubredditFilter;
@ -28,15 +29,15 @@ public class PostViewModel extends ViewModel {
private LiveData<NetworkState> initialLoadingState; private LiveData<NetworkState> initialLoadingState;
private LiveData<Boolean> hasPostLiveData; private LiveData<Boolean> hasPostLiveData;
private LiveData<PagedList<Post>> posts; private LiveData<PagedList<Post>> posts;
private MutableLiveData<Boolean> nsfwLiveData;
private MutableLiveData<SortType> sortTypeLiveData; private MutableLiveData<SortType> sortTypeLiveData;
private MutableLiveData<PostFilter> postFilterLiveData;
private NSFWAndSortTypeLiveData nsfwAndSortTypeLiveData; private NSFWAndSortTypeLiveData nsfwAndSortTypeLiveData;
public PostViewModel(Retrofit retrofit, String accessToken, String accountName, Locale locale, public PostViewModel(Retrofit retrofit, String accessToken, String accountName, Locale locale,
SharedPreferences sharedPreferences, SharedPreferences cache, int postType, SharedPreferences sharedPreferences, SharedPreferences cache, int postType,
SortType sortType, int filter, boolean nsfw, List<ReadPost> readPostList) { SortType sortType, PostFilter postFilter, int filter, List<ReadPost> readPostList) {
postDataSourceFactory = new PostDataSourceFactory(retrofit, accessToken, accountName, locale, postDataSourceFactory = new PostDataSourceFactory(retrofit, accessToken, accountName, locale,
sharedPreferences, cache, postType, sortType, filter, nsfw, readPostList); sharedPreferences, cache, postType, sortType, postFilter, filter, readPostList);
initialLoadingState = Transformations.switchMap(postDataSourceFactory.getPostDataSourceLiveData(), initialLoadingState = Transformations.switchMap(postDataSourceFactory.getPostDataSourceLiveData(),
PostDataSource::getInitialLoadStateLiveData); PostDataSource::getInitialLoadStateLiveData);
@ -45,12 +46,12 @@ public class PostViewModel extends ViewModel {
hasPostLiveData = Transformations.switchMap(postDataSourceFactory.getPostDataSourceLiveData(), hasPostLiveData = Transformations.switchMap(postDataSourceFactory.getPostDataSourceLiveData(),
PostDataSource::hasPostLiveData); PostDataSource::hasPostLiveData);
nsfwLiveData = new MutableLiveData<>();
nsfwLiveData.postValue(nsfw);
sortTypeLiveData = new MutableLiveData<>(); sortTypeLiveData = new MutableLiveData<>();
sortTypeLiveData.postValue(sortType); sortTypeLiveData.postValue(sortType);
postFilterLiveData = new MutableLiveData<>();
postFilterLiveData.postValue(postFilter);
nsfwAndSortTypeLiveData = new NSFWAndSortTypeLiveData(nsfwLiveData, sortTypeLiveData); nsfwAndSortTypeLiveData = new NSFWAndSortTypeLiveData(sortTypeLiveData, postFilterLiveData);
PagedList.Config pagedListConfig = PagedList.Config pagedListConfig =
(new PagedList.Config.Builder()) (new PagedList.Config.Builder())
@ -59,18 +60,19 @@ public class PostViewModel extends ViewModel {
.build(); .build();
posts = Transformations.switchMap(nsfwAndSortTypeLiveData, nsfwAndSort -> { posts = Transformations.switchMap(nsfwAndSortTypeLiveData, nsfwAndSort -> {
postDataSourceFactory.changeNSFWAndSortType(nsfwLiveData.getValue(), sortTypeLiveData.getValue()); postDataSourceFactory.changeSortTypeAndPostFilter(
sortTypeLiveData.getValue(), postFilterLiveData.getValue());
return (new LivePagedListBuilder(postDataSourceFactory, pagedListConfig)).build(); return (new LivePagedListBuilder(postDataSourceFactory, pagedListConfig)).build();
}); });
} }
public PostViewModel(Retrofit retrofit, String accessToken, String accountName, Locale locale, public PostViewModel(Retrofit retrofit, String accessToken, String accountName, Locale locale,
SharedPreferences sharedPreferences, SharedPreferences cache, String subredditName, SharedPreferences sharedPreferences, SharedPreferences cache, String subredditName,
int postType, SortType sortType, int filter, boolean nsfw, List<ReadPost> readPostList, int postType, SortType sortType, PostFilter postFilter, int filter,
List<SubredditFilter> subredditFilterList) { List<ReadPost> readPostList, List<SubredditFilter> subredditFilterList) {
postDataSourceFactory = new PostDataSourceFactory(retrofit, accessToken, accountName, locale, postDataSourceFactory = new PostDataSourceFactory(retrofit, accessToken, accountName, locale,
sharedPreferences, cache, subredditName, postType, sortType, filter, nsfw, readPostList, sharedPreferences, cache, subredditName, postType, sortType, postFilter, filter,
subredditFilterList); readPostList, subredditFilterList);
initialLoadingState = Transformations.switchMap(postDataSourceFactory.getPostDataSourceLiveData(), initialLoadingState = Transformations.switchMap(postDataSourceFactory.getPostDataSourceLiveData(),
PostDataSource::getInitialLoadStateLiveData); PostDataSource::getInitialLoadStateLiveData);
@ -79,12 +81,12 @@ public class PostViewModel extends ViewModel {
hasPostLiveData = Transformations.switchMap(postDataSourceFactory.getPostDataSourceLiveData(), hasPostLiveData = Transformations.switchMap(postDataSourceFactory.getPostDataSourceLiveData(),
PostDataSource::hasPostLiveData); PostDataSource::hasPostLiveData);
nsfwLiveData = new MutableLiveData<>();
nsfwLiveData.postValue(nsfw);
sortTypeLiveData = new MutableLiveData<>(); sortTypeLiveData = new MutableLiveData<>();
sortTypeLiveData.postValue(sortType); sortTypeLiveData.postValue(sortType);
postFilterLiveData = new MutableLiveData<>();
postFilterLiveData.postValue(postFilter);
nsfwAndSortTypeLiveData = new NSFWAndSortTypeLiveData(nsfwLiveData, sortTypeLiveData); nsfwAndSortTypeLiveData = new NSFWAndSortTypeLiveData(sortTypeLiveData, postFilterLiveData);
PagedList.Config pagedListConfig = PagedList.Config pagedListConfig =
(new PagedList.Config.Builder()) (new PagedList.Config.Builder())
@ -93,17 +95,19 @@ public class PostViewModel extends ViewModel {
.build(); .build();
posts = Transformations.switchMap(nsfwAndSortTypeLiveData, nsfwAndSort -> { posts = Transformations.switchMap(nsfwAndSortTypeLiveData, nsfwAndSort -> {
postDataSourceFactory.changeNSFWAndSortType(nsfwLiveData.getValue(), sortTypeLiveData.getValue()); postDataSourceFactory.changeSortTypeAndPostFilter(
sortTypeLiveData.getValue(), postFilterLiveData.getValue());
return (new LivePagedListBuilder(postDataSourceFactory, pagedListConfig)).build(); return (new LivePagedListBuilder(postDataSourceFactory, pagedListConfig)).build();
}); });
} }
public PostViewModel(Retrofit retrofit, String accessToken, String accountName, Locale locale, public PostViewModel(Retrofit retrofit, String accessToken, String accountName, Locale locale,
SharedPreferences sharedPreferences, SharedPreferences cache, String subredditName, SharedPreferences sharedPreferences, SharedPreferences cache, String subredditName,
int postType, SortType sortType, String where, int filter, boolean nsfw, int postType, SortType sortType, PostFilter postFilter, String where, int filter,
List<ReadPost> readPostList) { List<ReadPost> readPostList) {
postDataSourceFactory = new PostDataSourceFactory(retrofit, accessToken, accountName, locale, postDataSourceFactory = new PostDataSourceFactory(retrofit, accessToken, accountName, locale,
sharedPreferences, cache, subredditName, postType, sortType, where, filter, nsfw, readPostList); sharedPreferences, cache, subredditName, postType, sortType, postFilter, where, filter,
readPostList);
initialLoadingState = Transformations.switchMap(postDataSourceFactory.getPostDataSourceLiveData(), initialLoadingState = Transformations.switchMap(postDataSourceFactory.getPostDataSourceLiveData(),
PostDataSource::getInitialLoadStateLiveData); PostDataSource::getInitialLoadStateLiveData);
@ -112,12 +116,12 @@ public class PostViewModel extends ViewModel {
hasPostLiveData = Transformations.switchMap(postDataSourceFactory.getPostDataSourceLiveData(), hasPostLiveData = Transformations.switchMap(postDataSourceFactory.getPostDataSourceLiveData(),
PostDataSource::hasPostLiveData); PostDataSource::hasPostLiveData);
nsfwLiveData = new MutableLiveData<>();
nsfwLiveData.postValue(nsfw);
sortTypeLiveData = new MutableLiveData<>(); sortTypeLiveData = new MutableLiveData<>();
sortTypeLiveData.postValue(sortType); sortTypeLiveData.postValue(sortType);
postFilterLiveData = new MutableLiveData<>();
postFilterLiveData.postValue(postFilter);
nsfwAndSortTypeLiveData = new NSFWAndSortTypeLiveData(nsfwLiveData, sortTypeLiveData); nsfwAndSortTypeLiveData = new NSFWAndSortTypeLiveData(sortTypeLiveData, postFilterLiveData);
PagedList.Config pagedListConfig = PagedList.Config pagedListConfig =
(new PagedList.Config.Builder()) (new PagedList.Config.Builder())
@ -126,17 +130,19 @@ public class PostViewModel extends ViewModel {
.build(); .build();
posts = Transformations.switchMap(nsfwAndSortTypeLiveData, nsfwAndSort -> { posts = Transformations.switchMap(nsfwAndSortTypeLiveData, nsfwAndSort -> {
postDataSourceFactory.changeNSFWAndSortType(nsfwLiveData.getValue(), sortTypeLiveData.getValue()); postDataSourceFactory.changeSortTypeAndPostFilter(
sortTypeLiveData.getValue(), postFilterLiveData.getValue());
return (new LivePagedListBuilder(postDataSourceFactory, pagedListConfig)).build(); return (new LivePagedListBuilder(postDataSourceFactory, pagedListConfig)).build();
}); });
} }
public PostViewModel(Retrofit retrofit, String accessToken, String accountName, Locale locale, public PostViewModel(Retrofit retrofit, String accessToken, String accountName, Locale locale,
SharedPreferences sharedPreferences, SharedPreferences cache, String subredditName, SharedPreferences sharedPreferences, SharedPreferences cache, String subredditName,
String query, int postType, SortType sortType, int filter, boolean nsfw, String query, int postType, SortType sortType, PostFilter postFilter, int filter,
List<ReadPost> readPostList) { List<ReadPost> readPostList) {
postDataSourceFactory = new PostDataSourceFactory(retrofit, accessToken, accountName, locale, postDataSourceFactory = new PostDataSourceFactory(retrofit, accessToken, accountName, locale,
sharedPreferences, cache, subredditName, query, postType, sortType, filter, nsfw, readPostList); sharedPreferences, cache, subredditName, query, postType, sortType, postFilter, filter,
readPostList);
initialLoadingState = Transformations.switchMap(postDataSourceFactory.getPostDataSourceLiveData(), initialLoadingState = Transformations.switchMap(postDataSourceFactory.getPostDataSourceLiveData(),
PostDataSource::getInitialLoadStateLiveData); PostDataSource::getInitialLoadStateLiveData);
@ -145,12 +151,12 @@ public class PostViewModel extends ViewModel {
hasPostLiveData = Transformations.switchMap(postDataSourceFactory.getPostDataSourceLiveData(), hasPostLiveData = Transformations.switchMap(postDataSourceFactory.getPostDataSourceLiveData(),
PostDataSource::hasPostLiveData); PostDataSource::hasPostLiveData);
nsfwLiveData = new MutableLiveData<>();
nsfwLiveData.postValue(nsfw);
sortTypeLiveData = new MutableLiveData<>(); sortTypeLiveData = new MutableLiveData<>();
sortTypeLiveData.postValue(sortType); sortTypeLiveData.postValue(sortType);
postFilterLiveData = new MutableLiveData<>();
postFilterLiveData.postValue(postFilter);
nsfwAndSortTypeLiveData = new NSFWAndSortTypeLiveData(nsfwLiveData, sortTypeLiveData); nsfwAndSortTypeLiveData = new NSFWAndSortTypeLiveData(sortTypeLiveData, postFilterLiveData);
PagedList.Config pagedListConfig = PagedList.Config pagedListConfig =
(new PagedList.Config.Builder()) (new PagedList.Config.Builder())
@ -159,7 +165,8 @@ public class PostViewModel extends ViewModel {
.build(); .build();
posts = Transformations.switchMap(nsfwAndSortTypeLiveData, nsfwAndSort -> { posts = Transformations.switchMap(nsfwAndSortTypeLiveData, nsfwAndSort -> {
postDataSourceFactory.changeNSFWAndSortType(nsfwLiveData.getValue(), sortTypeLiveData.getValue()); postDataSourceFactory.changeSortTypeAndPostFilter(sortTypeLiveData.getValue(),
postFilterLiveData.getValue());
return (new LivePagedListBuilder(postDataSourceFactory, pagedListConfig)).build(); return (new LivePagedListBuilder(postDataSourceFactory, pagedListConfig)).build();
}); });
} }
@ -192,8 +199,8 @@ public class PostViewModel extends ViewModel {
sortTypeLiveData.postValue(sortType); sortTypeLiveData.postValue(sortType);
} }
public void changeNSFW(boolean nsfw) { public void changePostFilter(PostFilter postFilter) {
nsfwLiveData.postValue(nsfw); postFilterLiveData.postValue(postFilter);
} }
public static class Factory extends ViewModelProvider.NewInstanceFactory { public static class Factory extends ViewModelProvider.NewInstanceFactory {
@ -207,15 +214,16 @@ public class PostViewModel extends ViewModel {
private String query; private String query;
private int postType; private int postType;
private SortType sortType; private SortType sortType;
private PostFilter postFilter;
private String userWhere; private String userWhere;
private int filter; private int filter;
private boolean nsfw;
private List<ReadPost> readPostList; private List<ReadPost> readPostList;
private List<SubredditFilter> subredditFilterList; private List<SubredditFilter> subredditFilterList;
public Factory(Retrofit retrofit, String accessToken, String accountName, Locale locale, public Factory(Retrofit retrofit, String accessToken, String accountName, Locale locale,
SharedPreferences sharedPreferences, SharedPreferences postFeedScrolledPositionSharedPreferences, SharedPreferences sharedPreferences, SharedPreferences postFeedScrolledPositionSharedPreferences,
int postType, SortType sortType, int filter, boolean nsfw, List<ReadPost> readPostList) { int postType, SortType sortType, PostFilter postFilter, int filter,
List<ReadPost> readPostList) {
this.retrofit = retrofit; this.retrofit = retrofit;
this.accessToken = accessToken; this.accessToken = accessToken;
this.accountName = accountName; this.accountName = accountName;
@ -224,14 +232,16 @@ public class PostViewModel extends ViewModel {
this.postFeedScrolledPositionSharedPreferences = postFeedScrolledPositionSharedPreferences; this.postFeedScrolledPositionSharedPreferences = postFeedScrolledPositionSharedPreferences;
this.postType = postType; this.postType = postType;
this.sortType = sortType; this.sortType = sortType;
this.postFilter = postFilter;
this.filter = filter; this.filter = filter;
this.nsfw = nsfw;
this.readPostList = readPostList; this.readPostList = readPostList;
} }
public Factory(Retrofit retrofit, String accessToken, String accountName, Locale locale, public Factory(Retrofit retrofit, String accessToken, String accountName, Locale locale,
SharedPreferences sharedPreferences, SharedPreferences postFeedScrolledPositionSharedPreferences, String subredditName, SharedPreferences sharedPreferences,
int postType, SortType sortType, int filter, boolean nsfw, List<ReadPost> readPostList) { SharedPreferences postFeedScrolledPositionSharedPreferences, String subredditName,
int postType, SortType sortType, PostFilter postFilter, int filter,
List<ReadPost> readPostList) {
this.retrofit = retrofit; this.retrofit = retrofit;
this.accessToken = accessToken; this.accessToken = accessToken;
this.accountName = accountName; this.accountName = accountName;
@ -241,16 +251,17 @@ public class PostViewModel extends ViewModel {
this.subredditName = subredditName; this.subredditName = subredditName;
this.postType = postType; this.postType = postType;
this.sortType = sortType; this.sortType = sortType;
this.postFilter = postFilter;
this.filter = filter; this.filter = filter;
this.nsfw = nsfw;
this.readPostList = readPostList; this.readPostList = readPostList;
} }
//With subreddit filter //With subreddit filter
public Factory(Retrofit retrofit, String accessToken, String accountName, Locale locale, public Factory(Retrofit retrofit, String accessToken, String accountName, Locale locale,
SharedPreferences sharedPreferences, SharedPreferences postFeedScrolledPositionSharedPreferences, String subredditName, SharedPreferences sharedPreferences,
int postType, SortType sortType, int filter, boolean nsfw, List<ReadPost> readPostList, SharedPreferences postFeedScrolledPositionSharedPreferences, String subredditName,
List<SubredditFilter> subredditFilterList) { int postType, SortType sortType, PostFilter postFilter, int filter,
List<ReadPost> readPostList, List<SubredditFilter> subredditFilterList) {
this.retrofit = retrofit; this.retrofit = retrofit;
this.accessToken = accessToken; this.accessToken = accessToken;
this.accountName = accountName; this.accountName = accountName;
@ -260,8 +271,8 @@ public class PostViewModel extends ViewModel {
this.subredditName = subredditName; this.subredditName = subredditName;
this.postType = postType; this.postType = postType;
this.sortType = sortType; this.sortType = sortType;
this.postFilter = postFilter;
this.filter = filter; this.filter = filter;
this.nsfw = nsfw;
this.readPostList = readPostList; this.readPostList = readPostList;
this.subredditFilterList = subredditFilterList; this.subredditFilterList = subredditFilterList;
} }
@ -269,7 +280,8 @@ public class PostViewModel extends ViewModel {
//User posts //User posts
public Factory(Retrofit retrofit, String accessToken, String accountName, Locale locale, public Factory(Retrofit retrofit, String accessToken, String accountName, Locale locale,
SharedPreferences sharedPreferences, SharedPreferences postFeedScrolledPositionSharedPreferences, String subredditName, SharedPreferences sharedPreferences, SharedPreferences postFeedScrolledPositionSharedPreferences, String subredditName,
int postType, SortType sortType, String where, int filter, boolean nsfw, List<ReadPost> readPostList) { int postType, SortType sortType, PostFilter postFilter, String where, int filter,
List<ReadPost> readPostList) {
this.retrofit = retrofit; this.retrofit = retrofit;
this.accessToken = accessToken; this.accessToken = accessToken;
this.accountName = accountName; this.accountName = accountName;
@ -279,15 +291,16 @@ public class PostViewModel extends ViewModel {
this.subredditName = subredditName; this.subredditName = subredditName;
this.postType = postType; this.postType = postType;
this.sortType = sortType; this.sortType = sortType;
this.postFilter = postFilter;
userWhere = where; userWhere = where;
this.filter = filter; this.filter = filter;
this.nsfw = nsfw;
this.readPostList = readPostList; this.readPostList = readPostList;
} }
public Factory(Retrofit retrofit, String accessToken, String accountName, Locale locale, public Factory(Retrofit retrofit, String accessToken, String accountName, Locale locale,
SharedPreferences sharedPreferences, SharedPreferences postFeedScrolledPositionSharedPreferences, String subredditName, SharedPreferences sharedPreferences, SharedPreferences postFeedScrolledPositionSharedPreferences, String subredditName,
String query, int postType, SortType sortType, int filter, boolean nsfw, List<ReadPost> readPostList) { String query, int postType, SortType sortType, PostFilter postFilter, int filter,
List<ReadPost> readPostList) {
this.retrofit = retrofit; this.retrofit = retrofit;
this.accessToken = accessToken; this.accessToken = accessToken;
this.accountName = accountName; this.accountName = accountName;
@ -298,8 +311,8 @@ public class PostViewModel extends ViewModel {
this.query = query; this.query = query;
this.postType = postType; this.postType = postType;
this.sortType = sortType; this.sortType = sortType;
this.postFilter = postFilter;
this.filter = filter; this.filter = filter;
this.nsfw = nsfw;
this.readPostList = readPostList; this.readPostList = readPostList;
} }
@ -308,27 +321,27 @@ public class PostViewModel extends ViewModel {
public <T extends ViewModel> T create(@NonNull Class<T> modelClass) { public <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
if (postType == PostDataSource.TYPE_FRONT_PAGE) { if (postType == PostDataSource.TYPE_FRONT_PAGE) {
return (T) new PostViewModel(retrofit, accessToken, accountName, locale, sharedPreferences, return (T) new PostViewModel(retrofit, accessToken, accountName, locale, sharedPreferences,
postFeedScrolledPositionSharedPreferences, postType, sortType, filter, nsfw, readPostList); postFeedScrolledPositionSharedPreferences, postType, sortType, postFilter, filter, readPostList);
} else if (postType == PostDataSource.TYPE_SEARCH) { } else if (postType == PostDataSource.TYPE_SEARCH) {
return (T) new PostViewModel(retrofit, accessToken, accountName, locale, sharedPreferences, return (T) new PostViewModel(retrofit, accessToken, accountName, locale, sharedPreferences,
postFeedScrolledPositionSharedPreferences, subredditName, query, postType, sortType, postFeedScrolledPositionSharedPreferences, subredditName, query, postType, sortType,
filter, nsfw, readPostList); postFilter, filter, readPostList);
} else if (postType == PostDataSource.TYPE_SUBREDDIT || postType == PostDataSource.TYPE_MULTI_REDDIT) { } else if (postType == PostDataSource.TYPE_SUBREDDIT || postType == PostDataSource.TYPE_MULTI_REDDIT) {
return (T) new PostViewModel(retrofit, accessToken, accountName, locale, sharedPreferences, return (T) new PostViewModel(retrofit, accessToken, accountName, locale, sharedPreferences,
postFeedScrolledPositionSharedPreferences, subredditName, postType, sortType, postFeedScrolledPositionSharedPreferences, subredditName, postType, sortType,
filter, nsfw, readPostList, subredditFilterList); postFilter, filter, readPostList, subredditFilterList);
} else { } else {
return (T) new PostViewModel(retrofit, accessToken, accountName, locale, sharedPreferences, return (T) new PostViewModel(retrofit, accessToken, accountName, locale, sharedPreferences,
postFeedScrolledPositionSharedPreferences, subredditName, postType, sortType, postFeedScrolledPositionSharedPreferences, subredditName, postType, sortType,
userWhere, filter, nsfw, readPostList); postFilter, userWhere, filter, readPostList);
} }
} }
} }
private static class NSFWAndSortTypeLiveData extends MediatorLiveData<Pair<Boolean, SortType>> { private static class NSFWAndSortTypeLiveData extends MediatorLiveData<Pair<PostFilter, SortType>> {
public NSFWAndSortTypeLiveData(LiveData<Boolean> nsfw, LiveData<SortType> sortType) { public NSFWAndSortTypeLiveData(LiveData<SortType> sortTypeLiveData, LiveData<PostFilter> postFilterLiveData) {
addSource(nsfw, accessToken1 -> setValue(Pair.create(accessToken1, sortType.getValue()))); addSource(sortTypeLiveData, sortType -> setValue(Pair.create(postFilterLiveData.getValue(), sortType)));
addSource(sortType, sortType1 -> setValue(Pair.create(nsfw.getValue(), sortType1))); addSource(postFilterLiveData, postFilter -> setValue(Pair.create(postFilter, sortTypeLiveData.getValue())));
} }
} }
} }

View File

@ -61,7 +61,9 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:text="@string/bottom_sheet_post_text" /> android:text="@string/bottom_sheet_post_text"
android:fontFamily="?attr/font_default"
android:textSize="?attr/font_default" />
<com.google.android.material.checkbox.MaterialCheckBox <com.google.android.material.checkbox.MaterialCheckBox
android:id="@+id/post_type_text_check_box_customize_post_filter_activity" android:id="@+id/post_type_text_check_box_customize_post_filter_activity"
@ -89,7 +91,9 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:text="@string/bottom_sheet_post_link" /> android:text="@string/bottom_sheet_post_link"
android:fontFamily="?attr/font_default"
android:textSize="?attr/font_default" />
<com.google.android.material.checkbox.MaterialCheckBox <com.google.android.material.checkbox.MaterialCheckBox
android:id="@+id/post_type_link_check_box_customize_post_filter_activity" android:id="@+id/post_type_link_check_box_customize_post_filter_activity"
@ -117,7 +121,9 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:text="@string/bottom_sheet_post_image" /> android:text="@string/bottom_sheet_post_image"
android:fontFamily="?attr/font_default"
android:textSize="?attr/font_default" />
<com.google.android.material.checkbox.MaterialCheckBox <com.google.android.material.checkbox.MaterialCheckBox
android:id="@+id/post_type_image_check_box_customize_post_filter_activity" android:id="@+id/post_type_image_check_box_customize_post_filter_activity"
@ -145,7 +151,9 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:text="@string/bottom_sheet_post_video" /> android:text="@string/bottom_sheet_post_video"
android:fontFamily="?attr/font_default"
android:textSize="?attr/font_default" />
<com.google.android.material.checkbox.MaterialCheckBox <com.google.android.material.checkbox.MaterialCheckBox
android:id="@+id/post_type_video_check_box_customize_post_filter_activity" android:id="@+id/post_type_video_check_box_customize_post_filter_activity"
@ -289,6 +297,7 @@
android:id="@+id/min_vote_text_input_edit_text_customize_post_filter_activity" android:id="@+id/min_vote_text_input_edit_text_customize_post_filter_activity"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:inputType="numberSigned"
android:fontFamily="?attr/font_family" android:fontFamily="?attr/font_family"
android:textSize="?attr/font_default" android:textSize="?attr/font_default"
android:hint="@string/min_vote_hint" /> android:hint="@string/min_vote_hint" />
@ -309,6 +318,7 @@
android:id="@+id/max_vote_text_input_edit_text_customize_post_filter_activity" android:id="@+id/max_vote_text_input_edit_text_customize_post_filter_activity"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:inputType="numberSigned"
android:fontFamily="?attr/font_family" android:fontFamily="?attr/font_family"
android:textSize="?attr/font_default" android:textSize="?attr/font_default"
android:hint="@string/max_vote_hint" /> android:hint="@string/max_vote_hint" />
@ -329,6 +339,7 @@
android:id="@+id/min_comments_text_input_edit_text_customize_post_filter_activity" android:id="@+id/min_comments_text_input_edit_text_customize_post_filter_activity"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:inputType="numberSigned"
android:fontFamily="?attr/font_family" android:fontFamily="?attr/font_family"
android:textSize="?attr/font_default" android:textSize="?attr/font_default"
android:hint="@string/min_comments_hint" /> android:hint="@string/min_comments_hint" />
@ -349,6 +360,7 @@
android:id="@+id/max_comments_text_input_edit_text_customize_post_filter_activity" android:id="@+id/max_comments_text_input_edit_text_customize_post_filter_activity"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:inputType="numberSigned"
android:fontFamily="?attr/font_family" android:fontFamily="?attr/font_family"
android:textSize="?attr/font_default" android:textSize="?attr/font_default"
android:hint="@string/max_comments_hint" /> android:hint="@string/max_comments_hint" />
@ -369,6 +381,7 @@
android:id="@+id/min_awards_text_input_edit_text_customize_post_filter_activity" android:id="@+id/min_awards_text_input_edit_text_customize_post_filter_activity"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:inputType="numberSigned"
android:fontFamily="?attr/font_family" android:fontFamily="?attr/font_family"
android:textSize="?attr/font_default" android:textSize="?attr/font_default"
android:hint="@string/min_awards_hint" /> android:hint="@string/min_awards_hint" />
@ -389,6 +402,7 @@
android:id="@+id/max_awards_text_input_edit_text_customize_post_filter_activity" android:id="@+id/max_awards_text_input_edit_text_customize_post_filter_activity"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:inputType="numberSigned"
android:fontFamily="?attr/font_family" android:fontFamily="?attr/font_family"
android:textSize="?attr/font_default" android:textSize="?attr/font_default"
android:hint="@string/max_awards_hint" /> android:hint="@string/max_awards_hint" />