// 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.paymentcarddetailsform 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.PaymentCardDetailsFormManagerDelegate import com.facebook.react.viewmanagers.PaymentCardDetailsFormManagerInterface import com.olo.olopay.data.CardField import com.olopaysdkreactnative.events.FormValidEvent import com.olopaysdkreactnative.events.PaymentMethodResultEvent @ReactModule(name = PaymentCardDetailsFormManager.NAME) class PaymentCardDetailsFormManager : SimpleViewManager(), PaymentCardDetailsFormManagerInterface { private val mDelegate: ViewManagerDelegate = PaymentCardDetailsFormManagerDelegate(this) override fun getDelegate(): ViewManagerDelegate = mDelegate companion object { const val NAME = "PaymentCardDetailsForm" } override fun getName(): String { return NAME } override fun createViewInstance(reactContext: ThemedReactContext): PaymentCardDetailsForm { return PaymentCardDetailsForm(reactContext) } override fun getExportedCustomDirectEventTypeConstants(): MutableMap? { return MapBuilder.of( FormValidEvent.Name, MapBuilder.of("registrationName", FormValidEvent.Name), PaymentMethodResultEvent.Name, MapBuilder.of("registrationName", PaymentMethodResultEvent.Name)) } // Command implementations override fun focus(view: PaymentCardDetailsForm, field: String) { view.requestFocusFromJS(CardField.from(field) ?: CardField.CardNumber, true) } override fun blur(view: PaymentCardDetailsForm) { view.clearFocusFromJS() } override fun clear(view: PaymentCardDetailsForm) { view.clearCardDetails() } override fun createPaymentMethod(view: PaymentCardDetailsForm) { view.createPaymentMethod() } override fun setIsEnabled(view: PaymentCardDetailsForm, value: Boolean) { view.isEnabled = value } override fun setPlaceholders(view: PaymentCardDetailsForm, value: ReadableMap?) { if (value == null) return view.setPlaceholders(value) } override fun setCardStyles(view: PaymentCardDetailsForm, value: ReadableMap?) { if(value == null) return view.setCardStyles(value) } }