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.
- package/android/src/amazon/java/com/dooboolab/RNIap/EventSender.kt +10 -0
- package/android/src/amazon/java/com/dooboolab/RNIap/RNIapAmazonListener.kt +11 -23
- package/android/src/amazon/java/com/dooboolab/RNIap/RNIapAmazonModule.kt +14 -1
- package/android/src/testAmazon/java/com/dooboolab/RNIap/RNIapAmazonModuleTest.kt +6 -3
- package/package.json +1 -1
|
@@ -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
|
|
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(
|
|
97
|
+
eventSender?.sendEvent("purchase-updated", item)
|
|
100
98
|
availableItems.pushMap(promiseItem)
|
|
101
99
|
}
|
|
102
100
|
if (response.hasMore()) {
|
|
103
|
-
purchasingService
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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 {
|
|
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 {
|
|
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.
|
|
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)",
|