package io.scanbot.sdk.reactnative.models import com.facebook.react.bridge.ReactContext import com.facebook.react.bridge.WritableMap import com.facebook.react.uimanager.UIManagerHelper import com.facebook.react.uimanager.events.Event interface BaseEvent { val eventName: String fun parseData(): WritableMap fun send(surfaceId: Int, context: ReactContext, viewId: Int) { UIManagerHelper.getEventDispatcherForReactTag(context, viewId) ?.dispatchEvent(ComponentEvent(this, surfaceId, viewId)) } } class ComponentEvent(private val baseEvent: BaseEvent, surfaceId: Int, viewTag: Int) : Event(surfaceId, viewTag) { override fun getEventData(): WritableMap { return baseEvent.parseData() } override fun getEventName(): String { return baseEvent.eventName } override fun canCoalesce(): Boolean { return false } }