mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-02-25 12:17:22 +00:00
Allow swipe up to close viewer when viewing last story.
This commit is contained in:
committed by
Cody Henthorne
parent
6ddb5b983f
commit
6b745ba58a
@@ -192,7 +192,7 @@ class StoryViewerPageFragment :
|
||||
viewModel.setIsUserTouching(false)
|
||||
|
||||
val canCloseFromHorizontalSlide = requireView().translationX > DimensionUnit.DP.toPixels(56f)
|
||||
val canCloseFromVerticalSlide = requireView().translationY > DimensionUnit.DP.toPixels(56f)
|
||||
val canCloseFromVerticalSlide = requireView().translationY > DimensionUnit.DP.toPixels(56f) || requireView().translationY < -DimensionUnit.DP.toPixels(56f)
|
||||
if ((canCloseFromHorizontalSlide || canCloseFromVerticalSlide) && event.actionMasked == MotionEvent.ACTION_UP) {
|
||||
requireActivity().onBackPressed()
|
||||
} else {
|
||||
@@ -869,10 +869,12 @@ class StoryViewerPageFragment :
|
||||
|
||||
override fun onScroll(e1: MotionEvent, e2: MotionEvent, distanceX: Float, distanceY: Float): Boolean {
|
||||
val isFirstStory = sharedViewModel.stateSnapshot.page == 0
|
||||
val isLastStory = sharedViewModel.stateSnapshot.pages.lastIndex == sharedViewModel.stateSnapshot.page
|
||||
val isXMagnitudeGreaterThanYMagnitude = abs(distanceX) > abs(distanceY) || viewToTranslate.translationX > 0f
|
||||
val isFirstAndHasYTranslationOrNegativeY = isFirstStory && (viewToTranslate.translationY > 0f || distanceY < 0f)
|
||||
val isLastAndHasYTranslationOrNegativeY = isLastStory && (viewToTranslate.translationY < 0f || distanceY > 0f)
|
||||
|
||||
sharedViewModel.setIsChildScrolling(isXMagnitudeGreaterThanYMagnitude || isFirstAndHasYTranslationOrNegativeY)
|
||||
sharedViewModel.setIsChildScrolling(isXMagnitudeGreaterThanYMagnitude || isFirstAndHasYTranslationOrNegativeY || isLastAndHasYTranslationOrNegativeY)
|
||||
if (isFirstStory) {
|
||||
val delta = max(0f, (e2.rawY - e1.rawY)) / 3f
|
||||
val percent = INTERPOLATOR.getInterpolation(delta / maxSlide)
|
||||
@@ -882,6 +884,15 @@ class StoryViewerPageFragment :
|
||||
viewToTranslate.translationY = distance
|
||||
}
|
||||
|
||||
if (isLastStory) {
|
||||
val delta = max(0f, (e1.rawY - e2.rawY)) / 3f
|
||||
val percent = -INTERPOLATOR.getInterpolation(delta / maxSlide)
|
||||
val distance = maxSlide * percent
|
||||
|
||||
viewToTranslate.animate().cancel()
|
||||
viewToTranslate.translationY = distance
|
||||
}
|
||||
|
||||
val delta = max(0f, (e2.rawX - e1.rawX)) / 3f
|
||||
val percent = INTERPOLATOR.getInterpolation(delta / maxSlide)
|
||||
val distance = maxSlide * percent
|
||||
|
||||
Reference in New Issue
Block a user