// 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.events import com.facebook.react.bridge.Arguments import com.facebook.react.bridge.WritableMap import com.olo.olopay.data.ICardFieldState import com.olopaysdkreactnative.data.DataKeys import com.olopaysdkreactnative.events.OloPayEvent abstract class CvvEvent constructor( surfaceId: Int, reactTag: Int, private val fieldState: ICardFieldState, private val editedFieldError: String, private val uneditedFieldError: String ): OloPayEvent(surfaceId, reactTag) { override fun getEventData() : WritableMap? { val stateData = Arguments.createMap() stateData.putBoolean(DataKeys.IsValidKey, fieldState.isValid) stateData.putBoolean(DataKeys.IsFocusedKey, fieldState.isFocused) stateData.putBoolean(DataKeys.IsEmptyKey, fieldState.isEmpty) stateData.putBoolean(DataKeys.WasEditedKey, fieldState.wasEdited) stateData.putBoolean(DataKeys.WasFocusedKey, fieldState.wasFocused) val data = Arguments.createMap() data.putMap(DataKeys.StateKey, stateData) if (!fieldState.isValid) { val errors = Arguments.createMap() if (editedFieldError.isNotEmpty()) { errors.putString(DataKeys.EditedFieldErrorKey, editedFieldError) } if (uneditedFieldError.isNotEmpty()) { errors.putString(DataKeys.UneditedFieldErrorKey, uneditedFieldError) } if (editedFieldError.isNotEmpty() || uneditedFieldError.isNotEmpty()) { data.putMap(DataKeys.ErrorsKey, errors) } } return data } }