react-native-iap 12.4.13 → 12.4.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,10 @@
1
+ package com.dooboolab.RNIap
2
+
3
+ import com.facebook.react.bridge.WritableMap
4
+
5
+ interface EventSender {
6
+ fun sendEvent(
7
+ eventName: String,
8
+ params: WritableMap?
9
+ )
10
+ }
@@ -10,19 +10,17 @@ import com.amazon.device.iap.model.Receipt
10
10
  import com.amazon.device.iap.model.UserData
11
11
  import com.amazon.device.iap.model.UserDataResponse
12
12
  import com.facebook.react.bridge.Arguments
13
- import com.facebook.react.bridge.ReactContext
14
13
  import com.facebook.react.bridge.WritableMap
15
14
  import com.facebook.react.bridge.WritableNativeArray
16
15
  import com.facebook.react.bridge.WritableNativeMap
17
- import com.facebook.react.modules.core.DeviceEventManagerModule.RCTDeviceEventEmitter
18
16
  import java.lang.NumberFormatException
19
17
 
20
18
  val ProductType.typeString: String
21
19
  get() = if (this == ProductType.ENTITLED || this == ProductType.CONSUMABLE) "inapp" else "subs"
22
20
 
23
21
  class RNIapAmazonListener(
24
- private val reactContext: ReactContext,
25
- private val purchasingService: PurchasingServiceProxy
22
+ private val eventSender: EventSender?,
23
+ private val purchasingService: PurchasingServiceProxy?
26
24
  ) : PurchasingListener {
27
25
 
28
26
  override fun onProductDataResponse(response: ProductDataResponse) {
@@ -96,11 +94,11 @@ class RNIapAmazonListener(
96
94
  val item = receiptToMap(userData, receipt)
97
95
  promiseItem = WritableNativeMap()
98
96
  promiseItem.merge(item)
99
- sendEvent(reactContext, "purchase-updated", item)
97
+ eventSender?.sendEvent("purchase-updated", item)
100
98
  availableItems.pushMap(promiseItem)
101
99
  }
102
100
  if (response.hasMore()) {
103
- purchasingService.getPurchaseUpdates(false)
101
+ purchasingService?.getPurchaseUpdates(false)
104
102
  } else {
105
103
  if (purchases.size > 0 && promiseItem != null) {
106
104
  PromiseUtils
@@ -129,7 +127,7 @@ class RNIapAmazonListener(
129
127
  error.putString("debugMessage", debugMessage)
130
128
  error.putString("code", errorCode)
131
129
  error.putString("message", debugMessage)
132
- sendEvent(reactContext, "purchase-error", error)
130
+ eventSender?.sendEvent("purchase-error", error)
133
131
  PromiseUtils
134
132
  .rejectPromisesForKey(
135
133
  RNIapAmazonModule.PROMISE_QUERY_PURCHASES,
@@ -153,7 +151,7 @@ class RNIapAmazonListener(
153
151
  error.putString("debugMessage", debugMessage)
154
152
  error.putString("code", errorCode)
155
153
  error.putString("message", debugMessage)
156
- sendEvent(reactContext, "purchase-error", error)
154
+ eventSender?.sendEvent("purchase-error", error)
157
155
  PromiseUtils
158
156
  .rejectPromisesForKey(
159
157
  RNIapAmazonModule.PROMISE_QUERY_PURCHASES,
@@ -198,7 +196,7 @@ class RNIapAmazonListener(
198
196
  val item = receiptToMap(userData, receipt)
199
197
  val promiseItem: WritableMap = Arguments.createMap()
200
198
  promiseItem.merge(item)
201
- sendEvent(reactContext, "purchase-updated", item)
199
+ eventSender?.sendEvent("purchase-updated", item)
202
200
  PromiseUtils
203
201
  .resolvePromisesForKey(
204
202
  RNIapAmazonModule.PROMISE_BUY_ITEM,
@@ -213,7 +211,7 @@ class RNIapAmazonListener(
213
211
  error.putString("debugMessage", debugMessage)
214
212
  error.putString("code", errorCode)
215
213
  error.putString("message", debugMessage)
216
- sendEvent(reactContext, "purchase-error", error)
214
+ eventSender?.sendEvent("purchase-error", error)
217
215
  PromiseUtils
218
216
  .rejectPromisesForKey(
219
217
  RNIapAmazonModule.PROMISE_BUY_ITEM,
@@ -231,7 +229,7 @@ class RNIapAmazonListener(
231
229
  error.putString("debugMessage", debugMessage)
232
230
  error.putString("code", errorCode)
233
231
  error.putString("message", debugMessage)
234
- sendEvent(reactContext, "purchase-error", error)
232
+ eventSender?.sendEvent("purchase-error", error)
235
233
  PromiseUtils
236
234
  .rejectPromisesForKey(
237
235
  RNIapAmazonModule.PROMISE_BUY_ITEM,
@@ -248,7 +246,7 @@ class RNIapAmazonListener(
248
246
  error.putString("debugMessage", debugMessage)
249
247
  error.putString("code", errorCode)
250
248
  error.putString("message", debugMessage)
251
- sendEvent(reactContext, "purchase-error", error)
249
+ eventSender?.sendEvent("purchase-error", error)
252
250
  PromiseUtils
253
251
  .rejectPromisesForKey(
254
252
  RNIapAmazonModule.PROMISE_BUY_ITEM,
@@ -265,7 +263,7 @@ class RNIapAmazonListener(
265
263
  error.putString("debugMessage", debugMessage)
266
264
  error.putString("code", errorCode)
267
265
  error.putString("message", debugMessage)
268
- sendEvent(reactContext, "purchase-error", error)
266
+ eventSender?.sendEvent("purchase-error", error)
269
267
  PromiseUtils
270
268
  .rejectPromisesForKey(
271
269
  RNIapAmazonModule.PROMISE_BUY_ITEM,
@@ -307,16 +305,6 @@ class RNIapAmazonListener(
307
305
  }
308
306
  }
309
307
 
310
- fun sendEvent(
311
- reactContext: ReactContext,
312
- eventName: String,
313
- params: WritableMap?
314
- ) {
315
- reactContext
316
- .getJSModule(RCTDeviceEventEmitter::class.java)
317
- .emit(eventName, params)
318
- }
319
-
320
308
  companion object {
321
309
  private const val E_PRODUCT_DATA_RESPONSE_FAILED = "E_PRODUCT_DATA_RESPONSE_FAILED"
322
310
  private const val E_PRODUCT_DATA_RESPONSE_NOT_SUPPORTED =
@@ -13,14 +13,27 @@ import com.facebook.react.bridge.ReactApplicationContext
13
13
  import com.facebook.react.bridge.ReactContextBaseJavaModule
14
14
  import com.facebook.react.bridge.ReactMethod
15
15
  import com.facebook.react.bridge.ReadableArray
16
+ import com.facebook.react.bridge.WritableMap
16
17
  import com.facebook.react.module.annotations.ReactModule
18
+ import com.facebook.react.modules.core.DeviceEventManagerModule
17
19
 
18
20
  @ReactModule(name = RNIapAmazonModule.TAG)
19
21
  class RNIapAmazonModule(
20
22
  reactContext: ReactApplicationContext,
21
23
  private val purchasingService: PurchasingServiceProxy = PurchasingServiceProxyAmazonImpl(),
22
24
  private val handler: Handler = Handler(Looper.getMainLooper()),
23
- private val amazonListener: PurchasingListener = RNIapAmazonListener(reactContext, purchasingService)
25
+ private val amazonListener: PurchasingListener = RNIapAmazonListener(
26
+ object : EventSender {
27
+ private val rctDeviceEventEmitter = reactContext
28
+ .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
29
+
30
+ override fun sendEvent(eventName: String, params: WritableMap?) {
31
+ rctDeviceEventEmitter
32
+ .emit(eventName, params)
33
+ }
34
+ },
35
+ purchasingService
36
+ )
24
37
  ) :
25
38
  ReactContextBaseJavaModule(reactContext) {
26
39
  var hasListener = false
@@ -36,6 +36,9 @@ class RNIapAmazonModuleTest {
36
36
  @MockK
37
37
  lateinit var mainThreadHandler: Handler
38
38
 
39
+ @MockK
40
+ lateinit var eventSender: EventSender
41
+
39
42
  private lateinit var listener: RNIapAmazonListener
40
43
 
41
44
  private lateinit var module: RNIapAmazonModule
@@ -43,7 +46,7 @@ class RNIapAmazonModuleTest {
43
46
  @Before
44
47
  fun setUp() {
45
48
  MockKAnnotations.init(this, relaxUnitFun = true)
46
- listener = spyk(RNIapAmazonListener(context, purchasingServiceProxy))
49
+ listener = spyk(RNIapAmazonListener(eventSender, purchasingServiceProxy))
47
50
  module = RNIapAmazonModule(context, purchasingServiceProxy, mainThreadHandler, listener)
48
51
  }
49
52
 
@@ -78,7 +81,7 @@ class RNIapAmazonModuleTest {
78
81
  every { userData } returns mUserData
79
82
  }
80
83
 
81
- every { listener.sendEvent(any(), any(), any()) } just Runs
84
+ every { eventSender.sendEvent(any(), any()) } just Runs
82
85
 
83
86
  every { purchasingServiceProxy.purchase(any()) } answers {
84
87
  listener.onPurchaseResponse(
@@ -100,7 +103,7 @@ class RNIapAmazonModuleTest {
100
103
  val response = slot<WritableMap>()
101
104
  verify { promise.resolve(capture(response)) }
102
105
  assertEquals("mySku", response.captured.getString("productId"))
103
- verify { listener.sendEvent(any(), "purchase-updated", any()) }
106
+ verify { eventSender.sendEvent("purchase-updated", any()) }
104
107
  verify(exactly = 0) { purchasingServiceProxy.getPurchaseUpdates(false) }
105
108
  }
106
109
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-iap",
3
- "version": "12.4.13",
3
+ "version": "12.4.14",
4
4
  "description": "React Native In App Purchase Module.",
5
5
  "repository": "https://github.com/dooboolab/react-native-iap",
6
6
  "author": "dooboolab <support@dooboolab.com> (https://github.com/dooboolab)",