// Copyright © 2022 Olo Inc. All rights reserved. // This software is made available under the Olo Pay SDK License (See LICENSE.md file) package com.olopaysdkreactnative.paymentcardcvvview import com.facebook.react.bridge.ReadableMap import com.facebook.react.common.MapBuilder import com.facebook.react.module.annotations.ReactModule import com.facebook.react.uimanager.SimpleViewManager import com.facebook.react.uimanager.ThemedReactContext import com.facebook.react.uimanager.ViewManagerDelegate import com.facebook.react.viewmanagers.PaymentCardCvvViewManagerDelegate import com.facebook.react.viewmanagers.PaymentCardCvvViewManagerInterface import com.olopaysdkreactnative.paymentcardcvvview.events.CvvDetailsChangedEvent import com.olopaysdkreactnative.paymentcardcvvview.events.CvvFocusClearedEvent import com.olopaysdkreactnative.paymentcardcvvview.events.CvvFocusReceivedEvent import com.olopaysdkreactnative.events.CvvTokenResultEvent @ReactModule(name = PaymentCardCvvViewManager.NAME) class PaymentCardCvvViewManager : SimpleViewManager(), PaymentCardCvvViewManagerInterface { private val mDelegate: ViewManagerDelegate = PaymentCardCvvViewManagerDelegate(this) override fun getDelegate(): ViewManagerDelegate = mDelegate companion object { const val NAME = "PaymentCardCvvView" } override fun getName(): String { return NAME } override fun createViewInstance(reactContext: ThemedReactContext): PaymentCardCvvView { return PaymentCardCvvView(reactContext) } override fun getExportedCustomDirectEventTypeConstants(): MutableMap? { return MapBuilder.of( CvvDetailsChangedEvent.Name, MapBuilder.of("registrationName", CvvDetailsChangedEvent.Name), CvvFocusReceivedEvent.Name, MapBuilder.of("registrationName", CvvFocusReceivedEvent.Name), CvvFocusClearedEvent.Name, MapBuilder.of("registrationName", CvvFocusClearedEvent.Name), CvvTokenResultEvent.Name, MapBuilder.of("registrationName", CvvTokenResultEvent.Name)) } // Command implementations override fun focus(view: PaymentCardCvvView) { view.requestFocus() } override fun blur(view: PaymentCardCvvView) { view.clearFocus() } override fun clear(view: PaymentCardCvvView) { view.clearCvvDetails() } override fun createCvvUpdateToken(view: PaymentCardCvvView) { view.createCvvUpdateToken() } override fun setIsEnabled(view: PaymentCardCvvView, value: Boolean) { view.isEnabled = value } override fun setPlaceholder(view: PaymentCardCvvView, value: String?) { if(value == null) return view.setPlaceholder(value) } override fun setCustomErrorMessages(view: PaymentCardCvvView, value: ReadableMap?) { if(value == null) { return } view.setCustomErrorMessages(value) } override fun setCvvStyles(view: PaymentCardCvvView, value: ReadableMap?) { if(value == null) { return } view.setCvvStyles(value) } }