From c834cb6ff742e22f7db2b4f37dbf328855304095 Mon Sep 17 00:00:00 2001 From: Clark Date: Wed, 5 Apr 2023 17:16:48 -0400 Subject: [PATCH] Fix design assumption invalidated crash in MediaPreviewAdapter. --- .../securesms/mediapreview/MediaPreviewV2Adapter.kt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaPreviewV2Adapter.kt b/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaPreviewV2Adapter.kt index 473cd1e282..33a26e0951 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaPreviewV2Adapter.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaPreviewV2Adapter.kt @@ -11,6 +11,7 @@ import org.thoughtcrime.securesms.util.adapter.StableIdGenerator class MediaPreviewV2Adapter(fragment: Fragment) : FragmentStateAdapter(fragment) { private var items: List = listOf() private val stableIdGenerator = StableIdGenerator() + private val currentIdSet: HashSet = HashSet() override fun getItemCount(): Int { return items.count() @@ -44,6 +45,10 @@ class MediaPreviewV2Adapter(fragment: Fragment) : FragmentStateAdapter(fragment) return fragment } + override fun containsItem(itemId: Long): Boolean { + return currentIdSet.contains(itemId) + } + fun getFragmentTag(position: Int): String? { if (items.isEmpty() || position < 0 || position > itemCount) { return null @@ -59,6 +64,10 @@ class MediaPreviewV2Adapter(fragment: Fragment) : FragmentStateAdapter(fragment) fun updateBackingItems(newItems: Collection) { if (newItems != items) { items = newItems.toList() + currentIdSet.clear() + items.forEach { + currentIdSet.add(stableIdGenerator.getId(it)) + } notifyDataSetChanged() } }