Skip to content

Commit 3fabbdb

Browse files
committed
Update gesture initialization
1 parent ca5627f commit 3fabbdb

2 files changed

Lines changed: 13 additions & 15 deletions

File tree

android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -817,7 +817,11 @@ open class GestureHandler<ConcreteGestureHandlerT : GestureHandler<ConcreteGestu
817817
abstract class Factory<T : GestureHandler<T>> {
818818
abstract val type: Class<T>
819819
abstract val name: String
820-
abstract fun create(context: Context?): T
820+
821+
protected abstract fun create(context: Context?): T
822+
823+
fun create(context: Context?, handlerTag: Int): T = create(context).also { it.tag = handlerTag }
824+
821825
open fun setConfig(handler: T, config: ReadableMap) {
822826
handler.resetConfig()
823827
if (config.hasKey(KEY_SHOULD_CANCEL_WHEN_OUTSIDE)) {

android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt

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

44-
val handler = handlerFactory.create(reactApplicationContext).apply {
45-
tag = handlerTag
46-
setOnTouchEventListener(eventDispatcher)
47-
}
44+
val handler = handlerFactory.create(reactApplicationContext, handlerTag)
45+
handler.setOnTouchEventListener(eventDispatcher)
4846
registry.registerHandler(handler)
4947
interactionManager.configureInteractions(handler, config)
5048
handlerFactory.setConfig(handler, config)
@@ -77,13 +75,11 @@ class RNGestureHandlerModule(reactContext: ReactApplicationContext?) :
7775

7876
@Suppress("UNCHECKED_CAST")
7977
private fun <T : GestureHandler<T>> updateGestureHandlerHelper(handlerTag: Int, config: ReadableMap) {
80-
val handler = registry.getHandler(handlerTag) as T?
81-
if (handler != null) {
82-
val factory = RNGestureHandlerFactoryUtil.findFactoryForHandler(handler) ?: return
83-
interactionManager.dropRelationsForHandlerWithTag(handlerTag)
84-
interactionManager.configureInteractions(handler, config)
85-
factory.setConfig(handler, config)
86-
}
78+
val handler = registry.getHandler(handlerTag) as T? ?: return
79+
val factory = RNGestureHandlerFactoryUtil.findFactoryForHandler(handler) ?: return
80+
interactionManager.dropRelationsForHandlerWithTag(handlerTag)
81+
interactionManager.configureInteractions(handler, config)
82+
factory.setConfig(handler, config)
8783
}
8884

8985
@ReactMethod
@@ -161,9 +157,7 @@ class RNGestureHandlerModule(reactContext: ReactApplicationContext?) :
161157

162158
fun registerRootHelper(root: RNGestureHandlerRootHelper) {
163159
synchronized(roots) {
164-
if (root in roots) {
165-
throw IllegalStateException("Root helper$root already registered")
166-
}
160+
assert(root !in roots) { "Root helper$root already registered" }
167161
roots.add(root)
168162
}
169163
}

0 commit comments

Comments
 (0)