diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/landing/LandingPayload.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/landing/LandingPayload.kt new file mode 100644 index 0000000000..1c6c0810a3 --- /dev/null +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/landing/LandingPayload.kt @@ -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 +} diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/landing/MyStoriesItem.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/landing/MyStoriesItem.kt index 4cc1b738ba..09091dd904 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/landing/MyStoriesItem.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/landing/MyStoriesItem.kt @@ -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() } diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/landing/StoriesLandingFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/landing/StoriesLandingFragment.kt index 0a77f70ca6..8014dddeb1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/landing/StoriesLandingFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/landing/StoriesLandingFragment.kt @@ -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( diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/landing/StoriesLandingItem.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/landing/StoriesLandingItem.kt index 8028335010..89dd0bff66 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/landing/StoriesLandingItem.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/landing/StoriesLandingItem.kt @@ -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 }