From ddebd6086d11df4dce3d340c8df0e37efc230949 Mon Sep 17 00:00:00 2001 From: Alex Ning Date: Fri, 23 Oct 2020 17:53:30 +0800 Subject: Fix an issue in respect subreddit recommended comment sort type. Dirty workaround for sensitive swipe sensitivity in ViewPager2 in MainActivity. --- app/build.gradle | 12 +-- .../infinityforreddit/Activity/MainActivity.java | 14 +++ .../Activity/ViewPostDetailActivity.java | 100 +++++++++++---------- 3 files changed, 72 insertions(+), 54 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 993f9118..140ca72e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,11 +72,11 @@ dependencies { annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.3' implementation 'com.github.santalu:aspect-ratio-imageview:1.0.9' implementation 'com.lsjwzh:materialloadingprogressbar:0.5.8-RELEASE' - implementation 'io.noties.markwon:core:4.6.0' - implementation 'io.noties.markwon:linkify:4.6.0' - implementation 'io.noties.markwon:ext-strikethrough:4.6.0' - implementation 'io.noties.markwon:simple-ext:4.6.0' - implementation 'io.noties.markwon:recycler-table:4.6.0' + implementation 'io.noties.markwon:core:4.5.0' + implementation 'io.noties.markwon:linkify:4.5.0' + implementation 'io.noties.markwon:ext-strikethrough:4.5.0' + implementation 'io.noties.markwon:simple-ext:4.5.0' + implementation 'io.noties.markwon:recycler-table:4.5.0' implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.21' implementation 'com.github.Ferfalk:SimpleSearchView:0.1.4' @@ -90,7 +90,7 @@ dependencies { annotationProcessor 'com.evernote:android-state-processor:1.4.1' implementation 'com.nex3z:flow-layout:1.3.0' implementation 'com.r0adkll:slidableactivity:2.1.0' - implementation 'com.atlassian.commonmark:commonmark:0.15.2' + implementation 'com.atlassian.commonmark:commonmark:0.14.0' implementation 'com.google.code.gson:gson:2.8.6' implementation 'me.zhanghai.android.fastscroll:library:1.1.2' implementation "com.thefuntasty.hauler:core:3.1.0" diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/MainActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/MainActivity.java index 452016ee..e02c3bc3 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/MainActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/MainActivity.java @@ -55,6 +55,7 @@ import com.google.android.material.tabs.TabLayoutMediator; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; +import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; @@ -814,6 +815,19 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb } }); + try { + Field recyclerViewField = ViewPager2.class.getDeclaredField("mRecyclerView"); + recyclerViewField.setAccessible(true); + + RecyclerView recyclerView = (RecyclerView) recyclerViewField.get(viewPager2); + + Field touchSlopField = RecyclerView.class.getDeclaredField("mTouchSlop"); + touchSlopField.setAccessible(true); + + int touchSlop = (int) touchSlopField.get(recyclerView); + touchSlopField.set(recyclerView, touchSlop * 4); + } catch (NoSuchFieldException | IllegalAccessException ignore) {} + loadSubscriptions(); subscribedSubredditViewModel = new ViewModelProvider(this, diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/ViewPostDetailActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/ViewPostDetailActivity.java index daf0cbb7..1e233c35 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/ViewPostDetailActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/ViewPostDetailActivity.java @@ -832,67 +832,71 @@ public class ViewPostDetailActivity extends BaseActivity implements FlairBottomS }); mRecyclerView.setAdapter(mAdapter); - ParseComment.parseComment(response.body(), new ArrayList<>(), mLocale, - mExpandChildren, new ParseComment.ParseCommentListener() { - @Override - public void onParseCommentSuccess(ArrayList expandedComments, String parentId, ArrayList moreChildrenFullnames) { - ViewPostDetailActivity.this.children = moreChildrenFullnames; - - hasMoreChildren = children.size() != 0; - mAdapter.addComments(expandedComments, hasMoreChildren); - - if (children.size() > 0) { - mRecyclerView.clearOnScrollListeners(); - mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { - @Override - public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) { - super.onScrolled(recyclerView, dx, dy); - if (!mIsSmoothScrolling && !mLockFab) { - if (!recyclerView.canScrollVertically(1)) { - fab.hide(); - } else { - if (dy > 0) { - if (mSwipeUpToHideFab) { - fab.show(); - } else { - fab.hide(); - } + if (mRespectSubredditRecommendedSortType) { + fetchCommentsRespectRecommendedSort(false); + } else { + ParseComment.parseComment(response.body(), new ArrayList<>(), mLocale, + mExpandChildren, new ParseComment.ParseCommentListener() { + @Override + public void onParseCommentSuccess(ArrayList expandedComments, String parentId, ArrayList moreChildrenFullnames) { + ViewPostDetailActivity.this.children = moreChildrenFullnames; + + hasMoreChildren = children.size() != 0; + mAdapter.addComments(expandedComments, hasMoreChildren); + + if (children.size() > 0) { + mRecyclerView.clearOnScrollListeners(); + mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { + @Override + public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) { + super.onScrolled(recyclerView, dx, dy); + if (!mIsSmoothScrolling && !mLockFab) { + if (!recyclerView.canScrollVertically(1)) { + fab.hide(); } else { - if (mSwipeUpToHideFab) { - fab.hide(); + if (dy > 0) { + if (mSwipeUpToHideFab) { + fab.show(); + } else { + fab.hide(); + } } else { - fab.show(); + if (mSwipeUpToHideFab) { + fab.hide(); + } else { + fab.show(); + } } } } - } - if (!isLoadingMoreChildren && loadMoreChildrenSuccess) { - int visibleItemCount = mLinearLayoutManager.getChildCount(); - int totalItemCount = mLinearLayoutManager.getItemCount(); - int firstVisibleItemPosition = mLinearLayoutManager.findFirstVisibleItemPosition(); + if (!isLoadingMoreChildren && loadMoreChildrenSuccess) { + int visibleItemCount = mLinearLayoutManager.getChildCount(); + int totalItemCount = mLinearLayoutManager.getItemCount(); + int firstVisibleItemPosition = mLinearLayoutManager.findFirstVisibleItemPosition(); - if ((visibleItemCount + firstVisibleItemPosition >= totalItemCount) && firstVisibleItemPosition >= 0) { - fetchMoreComments(); + if ((visibleItemCount + firstVisibleItemPosition >= totalItemCount) && firstVisibleItemPosition >= 0) { + fetchMoreComments(); + } } } - } - @Override - public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) { - if (newState == RecyclerView.SCROLL_STATE_IDLE) { - mIsSmoothScrolling = false; + @Override + public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) { + if (newState == RecyclerView.SCROLL_STATE_IDLE) { + mIsSmoothScrolling = false; + } } - } - }); + }); + } } - } - @Override - public void onParseCommentFailed() { - mAdapter.initiallyLoadCommentsFailed(); - } - }); + @Override + public void onParseCommentFailed() { + mAdapter.initiallyLoadCommentsFailed(); + } + }); + } } @Override -- cgit v1.2.3