package com.checkoutreactnativecomponents import com.checkoutreactnativecomponents.components.card.CardManagerFabric import com.checkoutreactnativecomponents.components.card.CardManagerPaper import com.checkoutreactnativecomponents.components.card.CardPaperModule import com.checkoutreactnativecomponents.components.flow.FlowManagerFabric import com.checkoutreactnativecomponents.components.flow.FlowManagerPaper import com.checkoutreactnativecomponents.components.flow.FlowPaperModule import com.checkoutreactnativecomponents.components.googlepay.GooglePayManagerFabric import com.checkoutreactnativecomponents.components.googlepay.GooglePayManagerPaper import com.checkoutreactnativecomponents.utils.Arch import com.checkoutreactnativecomponents.utils.EventEmitter import com.facebook.react.ReactPackage import com.facebook.react.bridge.NativeModule import com.facebook.react.bridge.ReactApplicationContext import com.facebook.react.uimanager.ViewManager import kotlin.collections.ArrayList public class CheckoutReactNativeComponentsPackage : ReactPackage { override fun createViewManagers(reactContext: ReactApplicationContext): ArrayList> { val useFabric = Arch.isNewArch return arrayListOf>().apply { add(if (useFabric) FlowManagerFabric() else FlowManagerPaper()) add(if (useFabric) CardManagerFabric() else CardManagerPaper()) add(if (useFabric) GooglePayManagerFabric() else GooglePayManagerPaper()) } } override fun createNativeModules(reactContext: ReactApplicationContext): ArrayList { val useFabric = Arch.isNewArch return arrayListOf().apply { add(EventEmitter(reactContext)) add(if (useFabric) CheckoutModuleNewArch(reactContext) else CheckoutModuleOldArch(reactContext)) // Add Paper modules for old architecture imperative methods if (!useFabric) { add(FlowPaperModule(reactContext)) add(CardPaperModule(reactContext)) } } } }