mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-02 00:17:41 +01:00
Fix IndexOutOfBoundsException in story viewer back press.
This commit is contained in:
committed by
Alex Hart
parent
1ba9793943
commit
7b4fe7ff40
@@ -91,7 +91,7 @@ class StoryViewerFragment :
|
|||||||
lifecycleDisposable.bindTo(viewLifecycleOwner)
|
lifecycleDisposable.bindTo(viewLifecycleOwner)
|
||||||
lifecycleDisposable += viewModel.state.observeOn(AndroidSchedulers.mainThread()).subscribe { state ->
|
lifecycleDisposable += viewModel.state.observeOn(AndroidSchedulers.mainThread()).subscribe { state ->
|
||||||
if (state.noPosts) {
|
if (state.noPosts) {
|
||||||
onBackPressed(adapter.getRecipientId(storyPager.currentItem))
|
onBackPressed(adapter.getRecipientIdOrNull(storyPager.currentItem))
|
||||||
}
|
}
|
||||||
|
|
||||||
adapter.setPages(state.pages)
|
adapter.setPages(state.pages)
|
||||||
@@ -102,7 +102,7 @@ class StoryViewerFragment :
|
|||||||
pagerOnPageSelectedLock = false
|
pagerOnPageSelectedLock = false
|
||||||
|
|
||||||
if (state.page >= state.pages.size) {
|
if (state.page >= state.pages.size) {
|
||||||
onBackPressed(adapter.getRecipientId(storyPager.currentItem))
|
onBackPressed(adapter.getRecipientIdOrNull(storyPager.currentItem))
|
||||||
lifecycleDisposable.clear()
|
lifecycleDisposable.clear()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -155,14 +155,14 @@ class StoryViewerFragment :
|
|||||||
viewLifecycleOwner,
|
viewLifecycleOwner,
|
||||||
object : OnBackPressedCallback(true) {
|
object : OnBackPressedCallback(true) {
|
||||||
override fun handleOnBackPressed() {
|
override fun handleOnBackPressed() {
|
||||||
onBackPressed(adapter.getRecipientId(storyPager.currentItem))
|
onBackPressed(adapter.getRecipientIdOrNull(storyPager.currentItem))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun onBackPressed(currentId: RecipientId) {
|
private fun onBackPressed(currentId: RecipientId?) {
|
||||||
if (viewModel.getInitialRecipientId() != currentId) {
|
if (currentId == null || viewModel.getInitialRecipientId() != currentId) {
|
||||||
requireActivity().finish()
|
requireActivity().finish()
|
||||||
} else {
|
} else {
|
||||||
ActivityCompat.finishAfterTransition(requireActivity())
|
ActivityCompat.finishAfterTransition(requireActivity())
|
||||||
|
|||||||
@@ -28,6 +28,10 @@ class StoryViewerPagerAdapter(
|
|||||||
return pages[position]
|
return pages[position]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getRecipientIdOrNull(position: Int): RecipientId? {
|
||||||
|
return pages.getOrNull(position)
|
||||||
|
}
|
||||||
|
|
||||||
override fun onAttachedToRecyclerView(recyclerView: RecyclerView) {
|
override fun onAttachedToRecyclerView(recyclerView: RecyclerView) {
|
||||||
super.onAttachedToRecyclerView(recyclerView)
|
super.onAttachedToRecyclerView(recyclerView)
|
||||||
recyclerView.overScrollMode = RecyclerView.OVER_SCROLL_NEVER
|
recyclerView.overScrollMode = RecyclerView.OVER_SCROLL_NEVER
|
||||||
|
|||||||
Reference in New Issue
Block a user