diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapter.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapter.kt index eb2a51bbb8..dc3f9f184f 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapter.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapter.kt @@ -21,10 +21,10 @@ import org.mozilla.fenix.components.tips.Tip import org.mozilla.fenix.home.BottomSpacerViewHolder import org.mozilla.fenix.home.HomeFragmentStore import org.mozilla.fenix.home.TopPlaceholderViewHolder -import org.mozilla.fenix.home.pocket.PocketStoriesViewHolder -import org.mozilla.fenix.home.recentbookmarks.view.RecentBookmarksHeaderViewHolder import org.mozilla.fenix.home.pocket.PocketCategoriesViewHolder import org.mozilla.fenix.home.pocket.PocketRecommendationsHeaderViewHolder +import org.mozilla.fenix.home.pocket.PocketStoriesViewHolder +import org.mozilla.fenix.home.recentbookmarks.view.RecentBookmarksHeaderViewHolder import org.mozilla.fenix.home.recentbookmarks.view.RecentBookmarksViewHolder import org.mozilla.fenix.home.recenttabs.view.RecentTabViewHolder import org.mozilla.fenix.home.recenttabs.view.RecentTabsHeaderViewHolder @@ -84,11 +84,13 @@ sealed class AdapterItem(@LayoutRes val viewType: Int) { * * See https://github.com/mozilla-mobile/fenix/pull/20189#issuecomment-877124730 */ + @Suppress("ComplexCondition") override fun getChangePayload(newItem: AdapterItem): Any? { val newTopSites = (newItem as? TopSitePager) val oldTopSites = (this as? TopSitePager) if (newTopSites == null || oldTopSites == null || + newTopSites.topSites.size > oldTopSites.topSites.size || (newTopSites.topSites.size > TopSitePagerViewHolder.TOP_SITES_PER_PAGE) != (oldTopSites.topSites.size > TopSitePagerViewHolder.TOP_SITES_PER_PAGE) ) { diff --git a/app/src/test/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapterTest.kt b/app/src/test/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapterTest.kt index 03c72e82e1..bc0d10cd80 100644 --- a/app/src/test/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapterTest.kt +++ b/app/src/test/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapterTest.kt @@ -49,6 +49,18 @@ class SessionControlAdapterTest { assertNull(result) } + @Test + fun `GIVEN topSitePager with 3 topSites WHEN getChangePayload with 5 items THEN return null`() { + val newItem = TopSitePager(mockk(relaxed = true)) + val topSitePager = TopSitePager(mockk(relaxed = true)) + every { topSitePager.topSites.size } returns 3 + every { newItem.topSites.size } returns 5 + + val result = topSitePager.getChangePayload(newItem) + + assertNull(result) + } + @Test fun `GIVEN two topSites WHEN getChangePayload called with one changed item THEN return TopSitePagerPayload with changes`() { val topSite0 = TopSite.Frecent(-1, "topSite0", "", 0)