Skip to content

Commit a1351ec

Browse files
committed
Update gesture initialization
1 parent e27af26 commit a1351ec

2 files changed

Lines changed: 13 additions & 15 deletions

File tree

packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -852,7 +852,11 @@ open class GestureHandler<ConcreteGestureHandlerT : GestureHandler<ConcreteGestu
852852
abstract class Factory<T : GestureHandler<T>> {
853853
abstract val type: Class<T>
854854
abstract val name: String
855-
abstract fun create(context: Context?): T
855+
856+
protected abstract fun create(context: Context?): T
857+
858+
fun create(context: Context?, handlerTag: Int): T = create(context).also { it.tag = handlerTag }
859+
856860
open fun setConfig(handler: T, config: ReadableMap) {
857861
handler.resetConfig()
858862
if (config.hasKey(KEY_SHOULD_CANCEL_WHEN_OUTSIDE)) {

packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,8 @@ class RNGestureHandlerModule(reactContext: ReactApplicationContext?) :
4242
val handlerFactory = RNGestureHandlerFactoryUtil.findFactoryForName<T>(handlerName)
4343
?: throw JSApplicationIllegalArgumentException("Invalid handler name $handlerName")
4444

45-
val handler = handlerFactory.create(reactApplicationContext).apply {
46-
tag = handlerTag
47-
setOnTouchEventListener(eventDispatcher)
48-
}
45+
val handler = handlerFactory.create(reactApplicationContext, handlerTag)
46+
handler.setOnTouchEventListener(eventDispatcher)
4947
registry.registerHandler(handler)
5048
interactionManager.configureInteractions(handler, config)
5149
handlerFactory.setConfig(handler, config)
@@ -74,13 +72,11 @@ class RNGestureHandlerModule(reactContext: ReactApplicationContext?) :
7472

7573
@Suppress("UNCHECKED_CAST")
7674
private fun <T : GestureHandler<T>> updateGestureHandlerHelper(handlerTag: Int, config: ReadableMap) {
77-
val handler = registry.getHandler(handlerTag) as T?
78-
if (handler != null) {
79-
val factory = RNGestureHandlerFactoryUtil.findFactoryForHandler(handler) ?: return
80-
interactionManager.dropRelationsForHandlerWithTag(handlerTag)
81-
interactionManager.configureInteractions(handler, config)
82-
factory.setConfig(handler, config)
83-
}
75+
val handler = registry.getHandler(handlerTag) as T? ?: return
76+
val factory = RNGestureHandlerFactoryUtil.findFactoryForHandler(handler) ?: return
77+
interactionManager.dropRelationsForHandlerWithTag(handlerTag)
78+
interactionManager.configureInteractions(handler, config)
79+
factory.setConfig(handler, config)
8480
}
8581

8682
@ReactMethod
@@ -158,9 +154,7 @@ class RNGestureHandlerModule(reactContext: ReactApplicationContext?) :
158154

159155
fun registerRootHelper(root: RNGestureHandlerRootHelper) {
160156
synchronized(roots) {
161-
if (root in roots) {
162-
throw IllegalStateException("Root helper$root already registered")
163-
}
157+
assert(root !in roots) { "Root helper$root already registered" }
164158
roots.add(root)
165159
}
166160
}

0 commit comments

Comments
 (0)