package com.docvcapture.view import com.docvcapture.DocvSdkViewManagerSpec import com.docvcapture.TruliooCaptureObject import com.docvcapture.event.CaptureRegionChangedEvent import com.facebook.react.bridge.ReactContext import com.facebook.react.common.MapBuilder import com.facebook.react.module.annotations.ReactModule import com.facebook.react.uimanager.ThemedReactContext import com.facebook.react.uimanager.UIManagerHelper import com.facebook.react.uimanager.annotations.ReactProp import com.facebook.react.uimanager.events.EventDispatcher @ReactModule(name = DocvSdkViewManager.NAME) class DocvSdkViewManager : DocvSdkViewManagerSpec() { private val truliooCapture = TruliooCaptureObject.getInstance() override fun getName(): String { return NAME } override fun getExportedCustomDirectEventTypeConstants(): MutableMap? = MapBuilder.builder() .put(CaptureRegionChangedEvent.EVENT_NAME, MapBuilder.of("registrationName", CaptureRegionChangedEvent.EVENT_NAME)) .build() public override fun createViewInstance(context: ThemedReactContext): TruliooCameraCompose { return TruliooCameraCompose(context) } @ReactProp(name = "nativeCameraViewProps") override fun setNativeCameraViewProps(view: TruliooCameraCompose?, value: String?) { val cameraViewProps = TruliooCaptureObject.createNativeCameraViewProps(value!!) if (view !== null) { view.renderCameraComponent(cameraViewProps) sendCaptureRegionCoordinates(view) } } private fun sendCaptureRegionCoordinates(view: TruliooCameraCompose) { val reactContext = view.context as ReactContext val eventDispatcher: EventDispatcher? = UIManagerHelper.getEventDispatcherForReactTag(reactContext, view.id) val surfaceId = UIManagerHelper.getSurfaceId(reactContext) if (eventDispatcher !== null){ eventDispatcher.dispatchEvent( CaptureRegionChangedEvent( surfaceId, view.id, truliooCapture.getCoordinates().toJsonString() ) ) } } companion object { const val NAME = "DocvSdkView" } }