Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -50,16 +50,26 @@ class FormSheetDialogManager(

private val animationCoordinator = FormSheetAnimationCoordinator(dimmingManager)

private val lifecycleCoordinator =
FormSheetLifecycleCoordinator(
dialog = dialog,
dimmingManager = dimmingManager,
onShow = {
dimmingManager.onDialogShown()
bottomSheetView?.let { view ->
animationCoordinator.runEnterAnimation(view)
}
},
onDismiss = onDismissRequest,
)

init {
bottomSheetView?.let { view ->
setupBehaviorCallbacksForDimmingView(view)
setupOffscreenPositionBeforeFirstDraw(view)
}
setupDialogShowListener()
setupDialogCancelListener()
lifecycleCoordinator.setup()
setupWindowInsetsListener()

dimmingManager.setOnBackdropClickListener(onDismissRequest)
}

internal fun applyConfig(newConfig: FormSheetConfig) {
Expand Down Expand Up @@ -147,22 +157,6 @@ class FormSheetDialogManager(
ViewCompat.setWindowInsetsAnimationCallback(view, null)
}

private fun setupDialogShowListener() {
dialog.setOnShowListener {
dimmingManager.onDialogShown()

bottomSheetView?.let { view ->
animationCoordinator.runEnterAnimation(view)
}
}
}

private fun setupDialogCancelListener() {
dialog.setOnCancelListener {
onDismissRequest()
}
}

private fun setupWindowInsetsListener() {
ViewCompat.setOnApplyWindowInsetsListener(container) { _, insets ->
lastTopInset = getTopInset(insets)
Expand Down Expand Up @@ -220,12 +214,8 @@ class FormSheetDialogManager(
).bottom

internal fun destroy() {
dimmingManager.setOnBackdropClickListener {}

lifecycleCoordinator.destroy()
ViewCompat.setOnApplyWindowInsetsListener(container, null)

dialog.setOnShowListener(null)
dialog.setOnCancelListener(null)
dialog.dismiss()
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.swmansion.rnscreens.gamma.modals.formsheet

import com.google.android.material.bottomsheet.BottomSheetDialog
import com.swmansion.rnscreens.gamma.modals.dimmingview.DimmingViewManager

internal class FormSheetLifecycleCoordinator(
private val dialog: BottomSheetDialog,
private val dimmingManager: DimmingViewManager,
private val onShow: () -> Unit,
private val onDismiss: () -> Unit,
) {
internal fun setup() {
dialog.setOnShowListener {
onShow()
}

dialog.setOnCancelListener {
onDismiss()
}

dimmingManager.setOnBackdropClickListener {
onDismiss()
}
}

internal fun destroy() {
dimmingManager.setOnBackdropClickListener {}
dialog.setOnShowListener(null)
dialog.setOnCancelListener(null)
}
}