Skip to content

Commit

Permalink
Upgrade Compose implementation to leverage perf improvements in the l…
Browse files Browse the repository at this point in the history
…atest changes (#1308)

* Upgrade Compose implementation to leverage perf improvements

* Fix ktlint issue

* Fix build issues

* Bump up compose
  • Loading branch information
vinaygaba committed Aug 10, 2022
1 parent 55c3b2e commit 496d6b6
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 31 deletions.
4 changes: 2 additions & 2 deletions blessedDeps.gradle
Expand Up @@ -28,7 +28,7 @@ rootProject.ext.ANDROIDX_LEGACY = "1.0.0"
rootProject.ext.ANDROIDX_MATERIAL = "1.3.0"
rootProject.ext.ANDROIDX_PAGING = "2.0.0"
rootProject.ext.ANDROIDX_PAGING3 = "3.0.0"
rootProject.ext.ANDROIDX_RECYCLERVIEW = "1.2.0"
rootProject.ext.ANDROIDX_RECYCLERVIEW = "1.3.0-beta01"
rootProject.ext.ANDROIDX_ROOM = "2.4.2"
rootProject.ext.ANDROIDX_RUNTIME = "2.3.1"
rootProject.ext.ANDROIDX_VERSIONED_PARCELABLE = "1.1.1"
Expand All @@ -51,7 +51,7 @@ rootProject.ext.ROBOLECTRIC_VERSION = "4.5.1"
rootProject.ext.SQUARE_JAVAPOET_VERSION = "1.13.0"
rootProject.ext.SQUARE_KOTLINPOET_VERSION = "1.12.0"
rootProject.ext.COMPOSE_COMPILER_VERSION = "1.2.0"
rootProject.ext.COMPOSE_VERSION = "1.2.0-rc03"
rootProject.ext.COMPOSE_VERSION = "1.2.0"
rootProject.ext.COMPOSE_ACTIVITY_VERSION = "1.5.0"
rootProject.ext.KOTLINX_LIFECYCLE_RUNTIME_VERSION = "2.3.0"
rootProject.ext.KSP_VERSION = "1.7.0-1.0.6"
Expand Down
Expand Up @@ -3,6 +3,7 @@ package com.airbnb.epoxy
import android.graphics.Canvas
import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.ViewHolder

/**
* A wrapper around [androidx.recyclerview.widget.ItemTouchHelper.Callback] to cast all
Expand Down Expand Up @@ -186,7 +187,7 @@ abstract class EpoxyTouchHelperCallback : ItemTouchHelper.Callback() {
override fun onChildDrawOver(
c: Canvas,
recyclerView: RecyclerView,
viewHolder: RecyclerView.ViewHolder?,
viewHolder: ViewHolder,
dX: Float,
dY: Float,
actionState: Int,
Expand All @@ -212,7 +213,7 @@ abstract class EpoxyTouchHelperCallback : ItemTouchHelper.Callback() {
): Unit = super.onChildDrawOver(
c,
recyclerView,
viewHolder,
viewHolder as ViewHolder,
dX,
dY,
actionState,
Expand Down
Expand Up @@ -73,31 +73,33 @@ class StickyHeaderLinearLayoutManager @JvmOverloads constructor(
}
}

override fun onSaveInstanceState(): Parcelable {
return SavedState(
superState = super.onSaveInstanceState(),
scrollPosition = scrollPosition,
scrollOffset = scrollOffset
)
override fun onSaveInstanceState(): Parcelable? {
return super.onSaveInstanceState()?.let {
SavedState(
superState = it,
scrollPosition = scrollPosition,
scrollOffset = scrollOffset
)
}
}

override fun onRestoreInstanceState(state: Parcelable?) {
(state as? SavedState)?.let {
override fun onRestoreInstanceState(state: Parcelable) {
(state as SavedState).let {
scrollPosition = it.scrollPosition
scrollOffset = it.scrollOffset
super.onRestoreInstanceState(it.superState)
}
}

override fun scrollVerticallyBy(dy: Int, recycler: RecyclerView.Recycler, state: RecyclerView.State?): Int {
override fun scrollVerticallyBy(dy: Int, recycler: RecyclerView.Recycler, state: RecyclerView.State): Int {
val scrolled = restoreView { super.scrollVerticallyBy(dy, recycler, state) }
if (scrolled != 0) {
updateStickyHeader(recycler, false)
}
return scrolled
}

override fun scrollHorizontallyBy(dx: Int, recycler: RecyclerView.Recycler, state: RecyclerView.State?): Int {
override fun scrollHorizontallyBy(dx: Int, recycler: RecyclerView.Recycler, state: RecyclerView.State): Int {
val scrolled = restoreView { super.scrollHorizontallyBy(dx, recycler, state) }
if (scrolled != 0) {
updateStickyHeader(recycler, false)
Expand Down Expand Up @@ -505,7 +507,7 @@ class StickyHeaderLinearLayoutManager @JvmOverloads constructor(
*/
@Parcelize
data class SavedState(
val superState: Parcelable?,
val superState: Parcelable,
val scrollPosition: Int,
val scrollOffset: Int
) : Parcelable
Expand Down
17 changes: 1 addition & 16 deletions epoxy-compose/src/main/java/com/airbnb/epoxy/ComposeInterop.kt
Expand Up @@ -7,7 +7,6 @@ import android.widget.FrameLayout
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.ComposeView
import androidx.compose.ui.platform.ViewCompositionStrategy
import androidx.compose.ui.viewinterop.AndroidView

/**
Expand Down Expand Up @@ -40,11 +39,7 @@ class ComposeEpoxyModel(
return keyedTags.get(key)
}

override fun buildView(parent: ViewGroup): ComposeView = ComposeView(parent.context).apply {
setViewCompositionStrategy(
ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed
)
}
override fun buildView(parent: ViewGroup): ComposeView = ComposeView(parent.context)

override fun bind(view: ComposeView) {
super.bind(view)
Expand All @@ -67,16 +62,6 @@ class ComposeEpoxyModel(

return code
}

override fun unbind(view: ComposeView) {
super.unbind(view)
view.disposeComposition()
}

override fun onViewDetachedFromWindow(view: ComposeView) {
super.onViewDetachedFromWindow(view)
view.disposeComposition()
}
}

fun ModelCollector.composableInterop(
Expand Down

0 comments on commit 496d6b6

Please sign in to comment.