Skip to content

Commit

Permalink
Fix color resolving for RN 0.77 & 0.78 (might not compile on older ve…
Browse files Browse the repository at this point in the history
…rsions)
  • Loading branch information
kkafar committed Jan 29, 2025
1 parent 013585d commit 7b163de
Showing 1 changed file with 21 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ import androidx.annotation.RequiresApi
import androidx.appcompat.widget.Toolbar
import androidx.coordinatorlayout.widget.CoordinatorLayout
import androidx.core.animation.addListener
import androidx.core.view.OnApplyWindowInsetsListener
import androidx.core.view.WindowInsetsCompat
import com.facebook.react.uimanager.BackgroundStyleApplicator
import com.facebook.react.uimanager.PixelUtil
import com.facebook.react.uimanager.PointerEvents
import com.facebook.react.uimanager.ReactPointerEventsView
Expand Down Expand Up @@ -586,6 +586,24 @@ class ScreenStackFragment :
private fun createAndConfigureBottomSheetBehaviour(): BottomSheetBehavior<Screen> =
configureBottomSheetBehaviour(createBottomSheetBehaviour())

private fun resolveBackgroundColor(screen: Screen): Int? {
val screenColor =
(screen.background as? ColorDrawable?)?.color
?: (screen.background as? MaterialShapeDrawable?)?.tintList?.defaultColor

if (screenColor != null) {
return screenColor
}

val contentWrapper = screen.contentWrapper.get()
if (contentWrapper == null) {
return null
}

val contentWrapperColor = BackgroundStyleApplicator.getBackgroundColor(contentWrapper)
return contentWrapperColor
}

private fun attachShapeToScreen(screen: Screen) {
val cornerSize = PixelUtil.toPixelFromDIP(screen.sheetCornerRadius)
val shapeAppearanceModel =
Expand All @@ -596,10 +614,8 @@ class ScreenStackFragment :
setTopRightCorner(CornerFamily.ROUNDED, cornerSize)
}.build()
val shape = MaterialShapeDrawable(shapeAppearanceModel)
val currentColor =
(screen.background as? ColorDrawable?)?.color
?: (screen.background as? MaterialShapeDrawable?)?.tintList?.defaultColor
shape.setTint(currentColor ?: Color.TRANSPARENT)
val backgroundColor = resolveBackgroundColor(screen)
shape.setTint(backgroundColor ?: Color.TRANSPARENT)
screen.background = shape
}

Expand Down

0 comments on commit 7b163de

Please sign in to comment.