Prevent flicker of user avatar in MyStories when moving between tabs.

This commit is contained in:
Alex Hart
2022-04-14 09:46:23 -03:00
committed by Greyson Parrelli
parent 35a9fddbb2
commit d4d3124a90
4 changed files with 22 additions and 4 deletions

View File

@@ -0,0 +1,12 @@
package org.thoughtcrime.securesms.stories.landing
/**
* Global Landing page payloads. Currently the only "pulse" we send out
* to ViewHolders is RESUMED.
*/
enum class LandingPayload {
/**
* Notifies view holders when the fragment is resumed.
*/
RESUMED
}

View File

@@ -33,6 +33,10 @@ object MyStoriesItem {
private val badgeView: BadgeImageView = itemView.findViewById(R.id.badge)
override fun bind(model: Model) {
if (payload.contains(LandingPayload.RESUMED)) {
return
}
itemView.setOnClickListener { model.onClick() }
thumbnail.setOnClickListener { model.onClickThumbnail() }

View File

@@ -79,7 +79,7 @@ class StoriesLandingFragment : DSLSettingsFragment(layoutId = R.layout.stories_l
override fun onResume() {
super.onResume()
adapter.notifyItemRangeChanged(0, adapter.itemCount)
adapter.notifyItemRangeChanged(0, adapter.itemCount, LandingPayload.RESUMED)
}
override fun bindAdapter(adapter: DSLSettingsAdapter) {
@@ -117,8 +117,10 @@ class StoriesLandingFragment : DSLSettingsFragment(layoutId = R.layout.stories_l
}
viewModel.state.observe(viewLifecycleOwner) {
adapter.submitList(getConfiguration(it).toMappingModelList())
emptyNotice.visible = it.hasNoStories
if (it.loadingState == StoriesLandingState.LoadingState.LOADED) {
adapter.submitList(getConfiguration(it).toMappingModelList())
emptyNotice.visible = it.hasNoStories
}
}
requireActivity().onBackPressedDispatcher.addCallback(

View File

@@ -107,7 +107,7 @@ object StoriesLandingItem {
presentDateOrStatus(model)
setUpClickListeners(model)
if (payload.contains(STATUS_CHANGE)) {
if (payload.contains(STATUS_CHANGE) || payload.contains(LandingPayload.RESUMED)) {
return
}