|
|
|
@ -10,7 +10,7 @@ import androidx.recyclerview.widget.DiffUtil
|
|
|
|
|
import androidx.recyclerview.widget.ListAdapter
|
|
|
|
|
import kotlinx.android.synthetic.main.component_top_sites.view.*
|
|
|
|
|
import mozilla.components.feature.top.sites.TopSite
|
|
|
|
|
import org.mozilla.fenix.home.sessioncontrol.AdapterItem
|
|
|
|
|
import org.mozilla.fenix.home.sessioncontrol.AdapterItem.TopSitePagerPayload
|
|
|
|
|
import org.mozilla.fenix.home.sessioncontrol.TopSiteInteractor
|
|
|
|
|
import org.mozilla.fenix.home.sessioncontrol.viewholders.TopSitePagerViewHolder.Companion.TOP_SITES_PER_PAGE
|
|
|
|
|
import org.mozilla.fenix.home.sessioncontrol.viewholders.TopSiteViewHolder
|
|
|
|
@ -33,15 +33,26 @@ class TopSitesPagerAdapter(
|
|
|
|
|
if (payloads.isNullOrEmpty()) {
|
|
|
|
|
onBindViewHolder(holder, position)
|
|
|
|
|
} else {
|
|
|
|
|
if (payloads[0] is AdapterItem.TopSitePagerPayload) {
|
|
|
|
|
if (payloads[0] is TopSitePagerPayload) {
|
|
|
|
|
val adapter = holder.itemView.top_sites_list.adapter as TopSitesAdapter
|
|
|
|
|
val payload = payloads[0] as AdapterItem.TopSitePagerPayload
|
|
|
|
|
for (item in payload.changed) {
|
|
|
|
|
adapter.notifyItemChanged(
|
|
|
|
|
item.first % TOP_SITES_PER_PAGE,
|
|
|
|
|
TopSitesAdapter.TopSitePayload(item.second.title)
|
|
|
|
|
)
|
|
|
|
|
val payload = payloads[0] as TopSitePagerPayload
|
|
|
|
|
|
|
|
|
|
update(payload, position, adapter)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun update(
|
|
|
|
|
payload: TopSitePagerPayload,
|
|
|
|
|
position: Int,
|
|
|
|
|
adapter: TopSitesAdapter
|
|
|
|
|
) {
|
|
|
|
|
// Only currently selected page items need to be updated.
|
|
|
|
|
for (item in payload.changed) {
|
|
|
|
|
if (item.first < TOP_SITES_PER_PAGE && position == 0) {
|
|
|
|
|
adapter.notifyItemChanged(item.first, item.second)
|
|
|
|
|
} else if (item.first >= TOP_SITES_PER_PAGE && position == 1) {
|
|
|
|
|
adapter.notifyItemChanged(item.first - TOP_SITES_PER_PAGE, item.second)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -67,7 +78,7 @@ class TopSitesPagerAdapter(
|
|
|
|
|
changed.add(Pair(index, item))
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return if (changed.isNotEmpty()) AdapterItem.TopSitePagerPayload(changed) else null
|
|
|
|
|
return if (changed.isNotEmpty()) TopSitePagerPayload(changed) else null
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|