Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replaced event name string matching with ReactNative exported constants #164

Merged
merged 6 commits into from
Mar 16, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -240,13 +240,13 @@ Example:
import {
withStripeTerminal,
WithStripeTerminalProps,
CHANGE_CONNECTION_STATUS_LISTENER_NAME,
CHANGE_CONNECTION_STATUS,
Reader,
componentDidMount() {
this.discoverReaders();

const eventSubscription = props.emitter.addListener(
CHANGE_CONNECTION_STATUS_LISTENER_NAME, // didChangeConnectionStatus
CHANGE_CONNECTION_STATUS, // didChangeConnectionStatus
(status: Reader.ConnectionStatus) => {
// access to the current connection status
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.stripeterminalreactnative

enum class ReactNativeConstants(val listenerName: String) {
CHANGE_CONNECTION_STATUS("didChangeConnectionStatus"),
CHANGE_PAYMENT_STATUS("didChangePaymentStatus"),
FETCH_TOKEN_PROVIDER("onFetchTokenProviderListener"),
FINISH_DISCOVERING_READERS("didFinishDiscoveringReaders"),
FINISH_INSTALLING_UPDATE("didFinishInstallingUpdate"),
REQUEST_READER_DISPLAY_MESSAGE("didRequestReaderDisplayMessage"),
REQUEST_READER_INPUT("didRequestReaderInput"),
REPORT_AVAILABLE_UPDATE("didReportAvailableUpdate"),
REPORT_UNEXPECTED_READER_DISCONNECT("didReportUnexpectedReaderDisconnect"),
REPORT_UPDATE_PROGRESS("didReportReaderSoftwareUpdateProgress"),
START_INSTALLING_UPDATE("didStartInstallingUpdate"),
UPDATE_DISCOVERED_READERS("didUpdateDiscoveredReaders"),
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,63 @@ package com.stripeterminalreactnative
import android.app.Application
import android.content.ComponentCallbacks2
import android.content.res.Configuration
import com.facebook.react.bridge.*
import com.facebook.react.bridge.Promise
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.bridge.ReactContextBaseJavaModule
import com.facebook.react.bridge.ReactMethod
import com.facebook.react.bridge.ReadableMap
import com.facebook.react.bridge.UiThreadUtil
import com.facebook.react.bridge.WritableNativeArray
import com.facebook.react.bridge.WritableNativeMap
import com.facebook.react.modules.core.DeviceEventManagerModule.RCTDeviceEventEmitter
import com.stripe.stripeterminal.Terminal
import com.stripe.stripeterminal.TerminalApplicationDelegate.onCreate
import com.stripe.stripeterminal.TerminalApplicationDelegate.onTrimMemory
import com.stripe.stripeterminal.external.callable.*
import com.stripe.stripeterminal.external.callable.BluetoothReaderListener
import com.stripe.stripeterminal.external.callable.Callback
import com.stripe.stripeterminal.external.models.*
import com.stripe.stripeterminal.external.callable.Cancelable
import com.stripe.stripeterminal.external.callable.DiscoveryListener
import com.stripe.stripeterminal.external.callable.LocationListCallback
import com.stripe.stripeterminal.external.callable.PaymentIntentCallback
import com.stripe.stripeterminal.external.callable.PaymentMethodCallback
import com.stripe.stripeterminal.external.callable.ReaderCallback
import com.stripe.stripeterminal.external.callable.RefundCallback
import com.stripe.stripeterminal.external.callable.SetupIntentCallback
import com.stripe.stripeterminal.external.callable.TerminalListener
import com.stripe.stripeterminal.external.models.Cart
import com.stripe.stripeterminal.external.models.ConnectionConfiguration
import com.stripe.stripeterminal.external.models.ConnectionStatus
import com.stripe.stripeterminal.external.models.DiscoveryConfiguration
import com.stripe.stripeterminal.external.models.ListLocationsParameters
import com.stripe.stripeterminal.external.models.Location
import com.stripe.stripeterminal.external.models.PaymentIntent
import com.stripe.stripeterminal.external.models.PaymentIntentParameters
import com.stripe.stripeterminal.external.models.PaymentMethod
import com.stripe.stripeterminal.external.models.PaymentStatus
import com.stripe.stripeterminal.external.models.ReadReusableCardParameters
import com.stripe.stripeterminal.external.models.Reader
import com.stripe.stripeterminal.external.models.ReaderDisplayMessage
import com.stripe.stripeterminal.external.models.ReaderInputOptions
import com.stripe.stripeterminal.external.models.ReaderSoftwareUpdate
import com.stripe.stripeterminal.external.models.Refund
import com.stripe.stripeterminal.external.models.RefundParameters
import com.stripe.stripeterminal.external.models.SetupIntent
import com.stripe.stripeterminal.external.models.SetupIntentCancellationParameters
import com.stripe.stripeterminal.external.models.SetupIntentParameters
import com.stripe.stripeterminal.external.models.SimulatorConfiguration
import com.stripe.stripeterminal.external.models.TerminalException
import com.stripeterminalreactnative.ReactNativeConstants.CHANGE_CONNECTION_STATUS
import com.stripeterminalreactnative.ReactNativeConstants.CHANGE_PAYMENT_STATUS
import com.stripeterminalreactnative.ReactNativeConstants.FETCH_TOKEN_PROVIDER
import com.stripeterminalreactnative.ReactNativeConstants.FINISH_DISCOVERING_READERS
import com.stripeterminalreactnative.ReactNativeConstants.FINISH_INSTALLING_UPDATE
import com.stripeterminalreactnative.ReactNativeConstants.REPORT_AVAILABLE_UPDATE
import com.stripeterminalreactnative.ReactNativeConstants.REPORT_UNEXPECTED_READER_DISCONNECT
import com.stripeterminalreactnative.ReactNativeConstants.REPORT_UPDATE_PROGRESS
import com.stripeterminalreactnative.ReactNativeConstants.REQUEST_READER_DISPLAY_MESSAGE
import com.stripeterminalreactnative.ReactNativeConstants.REQUEST_READER_INPUT
import com.stripeterminalreactnative.ReactNativeConstants.START_INSTALLING_UPDATE
import com.stripeterminalreactnative.ReactNativeConstants.UPDATE_DISCOVERED_READERS


class StripeTerminalReactNativeModule(reactContext: ReactApplicationContext) :
Expand All @@ -25,16 +74,12 @@ class StripeTerminalReactNativeModule(reactContext: ReactApplicationContext) :
private var paymentIntents: HashMap<String, PaymentIntent?> = HashMap()
private var setupIntents: HashMap<String, SetupIntent?> = HashMap()

override fun getName(): String {
return "StripeTerminalReactNative"
}

init {
TokenProvider.tokenProviderCallback = object : TokenProviderCallback {
override fun invoke() {
reactApplicationContext
.getJSModule(RCTDeviceEventEmitter::class.java)
.emit("onFetchTokenProviderListener", null)
.emit(FETCH_TOKEN_PROVIDER.listenerName, null)
}
}

Expand All @@ -49,6 +94,13 @@ class StripeTerminalReactNativeModule(reactContext: ReactApplicationContext) :
})
}

override fun getConstants(): MutableMap<String, Any> =
ReactNativeConstants.values().associate { it.name to it.listenerName }.toMutableMap()

override fun getName(): String = "StripeTerminalReactNative"

override fun hasConstants(): Boolean = true

@ReactMethod
@Suppress("unused")
fun initialize(params: ReadableMap, promise: Promise) {
Expand All @@ -64,7 +116,7 @@ class StripeTerminalReactNativeModule(reactContext: ReactApplicationContext) :
"Reader has been disconnected unexpectedly"
)
)
sendEvent("didReportUnexpectedReaderDisconnect", error)
sendEvent(REPORT_UNEXPECTED_READER_DISCONNECT.listenerName, error)
}

override fun onConnectionStatusChange(status: ConnectionStatus) {
Expand All @@ -73,7 +125,7 @@ class StripeTerminalReactNativeModule(reactContext: ReactApplicationContext) :
val result = WritableNativeMap()
result.putString("result", mapFromConnectionStatus(status))

sendEvent("didChangeConnectionStatus", result)
sendEvent(CHANGE_CONNECTION_STATUS.listenerName, result)
}

override fun onPaymentStatusChange(status: PaymentStatus) {
Expand All @@ -82,7 +134,7 @@ class StripeTerminalReactNativeModule(reactContext: ReactApplicationContext) :
val result = WritableNativeMap()
result.putString("result", mapFromPaymentStatus(status))

sendEvent("didChangePaymentStatus", result)
sendEvent(CHANGE_PAYMENT_STATUS.listenerName, result)
}
}
val result = WritableNativeMap()
Expand Down Expand Up @@ -214,22 +266,22 @@ class StripeTerminalReactNativeModule(reactContext: ReactApplicationContext) :
val result = WritableNativeMap()
result.putArray("readers", readersArray)

sendEvent("didUpdateDiscoveredReaders", result)
sendEvent(UPDATE_DISCOVERED_READERS.listenerName, result)
}
},
object : Callback {
override fun onSuccess() {
val result = WritableNativeMap().apply {
putMap("result", WritableNativeMap())
}
sendEvent("didFinishDiscoveringReaders", result)
sendEvent(FINISH_DISCOVERING_READERS.listenerName, result)
}

override fun onFailure(e: TerminalException) {
val result = WritableNativeMap().apply {
putMap("result", createError(e))
}
sendEvent("didFinishDiscoveringReaders", result)
sendEvent(FINISH_DISCOVERING_READERS.listenerName, result)
}
}
)
Expand Down Expand Up @@ -311,7 +363,7 @@ class StripeTerminalReactNativeModule(reactContext: ReactApplicationContext) :
super.onReportAvailableUpdate(update)
val result = WritableNativeMap()
result.putMap("result", mapFromReaderSoftwareUpdate(update))
sendEvent("didReportAvailableUpdate", result)
sendEvent(REPORT_AVAILABLE_UPDATE.listenerName, result)
}

override fun onStartInstallingUpdate(
Expand All @@ -324,7 +376,7 @@ class StripeTerminalReactNativeModule(reactContext: ReactApplicationContext) :

val result = WritableNativeMap()
result.putMap("result", mapFromReaderSoftwareUpdate(update))
sendEvent("didStartInstallingUpdate", result)
sendEvent(START_INSTALLING_UPDATE.listenerName, result)
}

override fun onReportReaderSoftwareUpdateProgress(progress: Float) {
Expand All @@ -333,7 +385,7 @@ class StripeTerminalReactNativeModule(reactContext: ReactApplicationContext) :
val map = WritableNativeMap()
map.putString("progress", progress.toString())
result.putMap("result", map)
sendEvent("didReportReaderSoftwareUpdateProgress", result)
sendEvent(REPORT_UPDATE_PROGRESS.listenerName, result)
}

override fun onFinishInstallingUpdate(
Expand All @@ -347,23 +399,23 @@ class StripeTerminalReactNativeModule(reactContext: ReactApplicationContext) :
} ?: run {
result.putMap("result", WritableNativeMap())
}
sendEvent("didFinishInstallingUpdate", result)
sendEvent(FINISH_INSTALLING_UPDATE.listenerName, result)
}

override fun onRequestReaderInput(options: ReaderInputOptions) {
super.onRequestReaderInput(options)

val result = WritableNativeMap()
result.putArray("result", mapFromReaderInputOptions(options))
sendEvent("didRequestReaderInput", result)
sendEvent(REQUEST_READER_INPUT.listenerName, result)
}

override fun onRequestReaderDisplayMessage(message: ReaderDisplayMessage) {
super.onRequestReaderDisplayMessage(message)

val result = WritableNativeMap()
result.putString("result", mapFromReaderDisplayMessage(message))
sendEvent("didRequestReaderDisplayMessage", result)
sendEvent(REQUEST_READER_DISPLAY_MESSAGE.listenerName, result)
}
}

Expand Down
8 changes: 6 additions & 2 deletions example/src/screens/LogScreen.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,12 @@ const LogScreen = () => {
<Text style={styles.description}>{event.description}</Text>
{metadata && (
<List key="metadata" title="EVENT METADATA" bolded={false}>
{Object.keys(metadata).map((key) => (
<ListItem key={key} title={key} description={metadata[key]} />
{Object.keys(metadata).map((key, index) => (
<ListItem
key={key + index}
title={key}
description={metadata[key]}
/>
))}
</List>
)}
Expand Down
Loading