aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java
diff options
context:
space:
mode:
authorAlex Ning <chineseperson5@gmail.com>2021-02-05 04:27:58 +0000
committerAlex Ning <chineseperson5@gmail.com>2021-02-05 04:27:58 +0000
commitefd8d1c080d1f69775dc8952fb521b9bd466d774 (patch)
treea212a3b4f0167365226fc499e98aa448e16de50e /app/src/main/java
parent370e02c311c2c3f12bb7ad3e461321c825653732 (diff)
downloadinfinity-for-reddit-efd8d1c080d1f69775dc8952fb521b9bd466d774.tar
infinity-for-reddit-efd8d1c080d1f69775dc8952fb521b9bd466d774.tar.gz
infinity-for-reddit-efd8d1c080d1f69775dc8952fb521b9bd466d774.tar.bz2
infinity-for-reddit-efd8d1c080d1f69775dc8952fb521b9bd466d774.tar.lz
infinity-for-reddit-efd8d1c080d1f69775dc8952fb521b9bd466d774.tar.xz
infinity-for-reddit-efd8d1c080d1f69775dc8952fb521b9bd466d774.tar.zst
infinity-for-reddit-efd8d1c080d1f69775dc8952fb521b9bd466d774.zip
Fix NullPointerException in PostFilter.mergePostFilter. Minor bugs fixed in CommentsListingFragment.
Diffstat (limited to 'app/src/main/java')
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/fragments/CommentsListingFragment.java128
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/postfilter/PostFilter.java51
2 files changed, 95 insertions, 84 deletions
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/CommentsListingFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/CommentsListingFragment.java
index 3675a8ea..c730b4ba 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/CommentsListingFragment.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/CommentsListingFragment.java
@@ -254,80 +254,82 @@ public class CommentsListingFragment extends Fragment implements FragmentCommuni
}
private void bindView(Resources resources) {
- mLinearLayoutManager = new LinearLayoutManager(mActivity);
- mCommentRecyclerView.setLayoutManager(mLinearLayoutManager);
-
- mAdapter = new CommentsListingRecyclerViewAdapter(mActivity, mOauthRetrofit, customThemeWrapper,
- getResources().getConfiguration().locale, mSharedPreferences,
- getArguments().getString(EXTRA_ACCESS_TOKEN), getArguments().getString(EXTRA_ACCOUNT_NAME),
- () -> mCommentViewModel.retryLoadingMore());
-
- String username = getArguments().getString(EXTRA_USERNAME);
- String sort = mSortTypeSharedPreferences.getString(SharedPreferencesUtils.SORT_TYPE_USER_COMMENT, SortType.Type.NEW.name());
- if(sort.equals(SortType.Type.CONTROVERSIAL.name()) || sort.equals(SortType.Type.TOP.name())) {
- String sortTime = mSortTypeSharedPreferences.getString(SharedPreferencesUtils.SORT_TIME_USER_COMMENT, SortType.Time.ALL.name());
- sortType = new SortType(SortType.Type.valueOf(sort.toUpperCase()), SortType.Time.valueOf(sortTime.toUpperCase()));
- } else {
- sortType = new SortType(SortType.Type.valueOf(sort.toUpperCase()));
- }
+ if (mActivity != null && !mActivity.isFinishing() && !mActivity.isDestroyed()) {
+ mLinearLayoutManager = new LinearLayoutManager(mActivity);
+ mCommentRecyclerView.setLayoutManager(mLinearLayoutManager);
+
+ mAdapter = new CommentsListingRecyclerViewAdapter(mActivity, mOauthRetrofit, customThemeWrapper,
+ getResources().getConfiguration().locale, mSharedPreferences,
+ getArguments().getString(EXTRA_ACCESS_TOKEN), getArguments().getString(EXTRA_ACCOUNT_NAME),
+ () -> mCommentViewModel.retryLoadingMore());
+
+ String username = getArguments().getString(EXTRA_USERNAME);
+ String sort = mSortTypeSharedPreferences.getString(SharedPreferencesUtils.SORT_TYPE_USER_COMMENT, SortType.Type.NEW.name());
+ if(sort.equals(SortType.Type.CONTROVERSIAL.name()) || sort.equals(SortType.Type.TOP.name())) {
+ String sortTime = mSortTypeSharedPreferences.getString(SharedPreferencesUtils.SORT_TIME_USER_COMMENT, SortType.Time.ALL.name());
+ sortType = new SortType(SortType.Type.valueOf(sort.toUpperCase()), SortType.Time.valueOf(sortTime.toUpperCase()));
+ } else {
+ sortType = new SortType(SortType.Type.valueOf(sort.toUpperCase()));
+ }
- mCommentRecyclerView.setAdapter(mAdapter);
+ mCommentRecyclerView.setAdapter(mAdapter);
- if (mActivity instanceof RecyclerViewContentScrollingInterface) {
- mCommentRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
- @Override
- public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
- if (dy > 0) {
- ((RecyclerViewContentScrollingInterface) mActivity).contentScrollDown();
- } else if (dy < 0) {
- ((RecyclerViewContentScrollingInterface) mActivity).contentScrollUp();
+ if (mActivity instanceof RecyclerViewContentScrollingInterface) {
+ mCommentRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
+ @Override
+ public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
+ if (dy > 0) {
+ ((RecyclerViewContentScrollingInterface) mActivity).contentScrollDown();
+ } else if (dy < 0) {
+ ((RecyclerViewContentScrollingInterface) mActivity).contentScrollUp();
+ }
}
- }
- });
- }
-
- CommentViewModel.Factory factory;
-
- if (mAccessToken == null) {
- factory = new CommentViewModel.Factory(mRetrofit,
- resources.getConfiguration().locale, null, username, sortType,
- getArguments().getBoolean(EXTRA_ARE_SAVED_COMMENTS));
- } else {
- factory = new CommentViewModel.Factory(mOauthRetrofit,
- resources.getConfiguration().locale, mAccessToken, username, sortType,
- getArguments().getBoolean(EXTRA_ARE_SAVED_COMMENTS));
- }
+ });
+ }
- mCommentViewModel = new ViewModelProvider(this, factory).get(CommentViewModel.class);
- mCommentViewModel.getComments().observe(getViewLifecycleOwner(), comments -> mAdapter.submitList(comments));
+ CommentViewModel.Factory factory;
- mCommentViewModel.hasComment().observe(getViewLifecycleOwner(), hasComment -> {
- mSwipeRefreshLayout.setRefreshing(false);
- if (hasComment) {
- mFetchCommentInfoLinearLayout.setVisibility(View.GONE);
+ if (mAccessToken == null) {
+ factory = new CommentViewModel.Factory(mRetrofit,
+ resources.getConfiguration().locale, null, username, sortType,
+ getArguments().getBoolean(EXTRA_ARE_SAVED_COMMENTS));
} else {
- mFetchCommentInfoLinearLayout.setOnClickListener(view -> {
- //Do nothing
- });
- showErrorView(R.string.no_comments);
+ factory = new CommentViewModel.Factory(mOauthRetrofit,
+ resources.getConfiguration().locale, mAccessToken, username, sortType,
+ getArguments().getBoolean(EXTRA_ARE_SAVED_COMMENTS));
}
- });
- mCommentViewModel.getInitialLoadingState().observe(getViewLifecycleOwner(), networkState -> {
- if (networkState.getStatus().equals(NetworkState.Status.SUCCESS)) {
- mSwipeRefreshLayout.setRefreshing(false);
- } else if (networkState.getStatus().equals(NetworkState.Status.FAILED)) {
+ mCommentViewModel = new ViewModelProvider(this, factory).get(CommentViewModel.class);
+ mCommentViewModel.getComments().observe(getViewLifecycleOwner(), comments -> mAdapter.submitList(comments));
+
+ mCommentViewModel.hasComment().observe(getViewLifecycleOwner(), hasComment -> {
mSwipeRefreshLayout.setRefreshing(false);
- mFetchCommentInfoLinearLayout.setOnClickListener(view -> refresh());
- showErrorView(R.string.load_comments_failed);
- } else {
- mSwipeRefreshLayout.setRefreshing(true);
- }
- });
+ if (hasComment) {
+ mFetchCommentInfoLinearLayout.setVisibility(View.GONE);
+ } else {
+ mFetchCommentInfoLinearLayout.setOnClickListener(view -> {
+ //Do nothing
+ });
+ showErrorView(R.string.no_comments);
+ }
+ });
- mCommentViewModel.getPaginationNetworkState().observe(getViewLifecycleOwner(), networkState -> mAdapter.setNetworkState(networkState));
+ mCommentViewModel.getInitialLoadingState().observe(getViewLifecycleOwner(), networkState -> {
+ if (networkState.getStatus().equals(NetworkState.Status.SUCCESS)) {
+ mSwipeRefreshLayout.setRefreshing(false);
+ } else if (networkState.getStatus().equals(NetworkState.Status.FAILED)) {
+ mSwipeRefreshLayout.setRefreshing(false);
+ mFetchCommentInfoLinearLayout.setOnClickListener(view -> refresh());
+ showErrorView(R.string.load_comments_failed);
+ } else {
+ mSwipeRefreshLayout.setRefreshing(true);
+ }
+ });
+
+ mCommentViewModel.getPaginationNetworkState().observe(getViewLifecycleOwner(), networkState -> mAdapter.setNetworkState(networkState));
- mSwipeRefreshLayout.setOnRefreshListener(() -> mCommentViewModel.refresh());
+ mSwipeRefreshLayout.setOnRefreshListener(() -> mCommentViewModel.refresh());
+ }
}
public void changeSortType(SortType sortType) {
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/postfilter/PostFilter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/postfilter/PostFilter.java
index 30125ba8..99d40536 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/postfilter/PostFilter.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/postfilter/PostFilter.java
@@ -212,10 +212,10 @@ public class PostFilter implements Parcelable {
}
public static PostFilter mergePostFilter(List<PostFilter> postFilterList) {
- PostFilter postFilter = new PostFilter();
if (postFilterList.size() == 1) {
return postFilterList.get(0);
}
+ PostFilter postFilter = new PostFilter();
StringBuilder stringBuilder;
postFilter.name = "Merged";
for (PostFilter p : postFilterList) {
@@ -229,30 +229,39 @@ public class PostFilter implements Parcelable {
postFilter.onlyNSFW = p.onlyNSFW ? p.onlyNSFW : postFilter.onlyNSFW;
postFilter.onlySpoiler = p.onlySpoiler ? p.onlySpoiler : postFilter.onlySpoiler;
- postFilter.postTitleExcludesRegex = p.postTitleExcludesRegex.equals("") ? postFilter.postTitleExcludesRegex : p.postTitleExcludesRegex;
- stringBuilder = new StringBuilder(postFilter.postTitleExcludesStrings);
- stringBuilder.append(",").append(p.postTitleExcludesStrings);
- postFilter.postTitleExcludesStrings = stringBuilder.toString();
+ if (p.postTitleExcludesRegex != null && !p.postTitleExcludesRegex.equals("")) {
+ postFilter.postTitleExcludesRegex = p.postTitleExcludesRegex;
+ }
- postFilter.excludeSubreddits = p.excludeSubreddits.equals("") ? postFilter.excludeSubreddits : p.postTitleExcludesRegex;
- stringBuilder = new StringBuilder(postFilter.excludeSubreddits);
- stringBuilder.append(",").append(p.excludeSubreddits);
- postFilter.excludeSubreddits = stringBuilder.toString();
+ if (p.postTitleExcludesStrings != null && !p.postTitleExcludesStrings.equals("")) {
+ stringBuilder = new StringBuilder(postFilter.postTitleExcludesStrings == null ? "" : postFilter.postTitleExcludesStrings);
+ stringBuilder.append(",").append(p.postTitleExcludesStrings);
+ postFilter.postTitleExcludesStrings = stringBuilder.toString();
+ }
- postFilter.excludeUsers = p.excludeUsers.equals("") ? postFilter.excludeUsers : p.postTitleExcludesRegex;
- stringBuilder = new StringBuilder(postFilter.excludeUsers);
- stringBuilder.append(",").append(p.excludeUsers);
- postFilter.excludeUsers = stringBuilder.toString();
+ if (p.excludeSubreddits != null && !p.excludeSubreddits.equals("")) {
+ stringBuilder = new StringBuilder(postFilter.excludeSubreddits == null ? "" : postFilter.excludeSubreddits);
+ stringBuilder.append(",").append(p.excludeSubreddits);
+ postFilter.excludeSubreddits = stringBuilder.toString();
+ }
- postFilter.containFlairs = p.containFlairs.equals("") ? postFilter.containFlairs : p.postTitleExcludesRegex;
- stringBuilder = new StringBuilder(postFilter.containFlairs);
- stringBuilder.append(",").append(p.containFlairs);
- postFilter.containFlairs = stringBuilder.toString();
+ if (p.excludeUsers != null && !p.excludeUsers.equals("")) {
+ stringBuilder = new StringBuilder(postFilter.excludeUsers == null ? "" : postFilter.excludeUsers);
+ stringBuilder.append(",").append(p.excludeUsers);
+ postFilter.excludeUsers = stringBuilder.toString();
+ }
+
+ if (p.containFlairs != null && !p.containFlairs.equals("")) {
+ stringBuilder = new StringBuilder(postFilter.containFlairs == null ? "" : postFilter.containFlairs);
+ stringBuilder.append(",").append(p.containFlairs);
+ postFilter.containFlairs = stringBuilder.toString();
+ }
- postFilter.excludeFlairs = p.excludeFlairs.equals("") ? postFilter.excludeFlairs : p.postTitleExcludesRegex;
- stringBuilder = new StringBuilder(postFilter.excludeFlairs);
- stringBuilder.append(",").append(p.excludeFlairs);
- postFilter.excludeFlairs = stringBuilder.toString();
+ if (p.excludeFlairs != null && !p.excludeFlairs.equals("")) {
+ stringBuilder = new StringBuilder(postFilter.excludeFlairs == null ? "" : postFilter.excludeFlairs);
+ stringBuilder.append(",").append(p.excludeFlairs);
+ postFilter.excludeFlairs = stringBuilder.toString();
+ }
postFilter.containTextType = p.containTextType || postFilter.containTextType;
postFilter.containLinkType = p.containLinkType || postFilter.containLinkType;