Merge pull request #2524 from ecency/nt/iap-update

Nt/iap update
This commit is contained in:
Feruz M 2022-11-09 06:51:25 +05:30 committed by GitHub
commit 68e24cc260
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 34 additions and 35 deletions

View File

@ -530,7 +530,7 @@ PODS:
- RNFBApp
- RNGestureHandler (2.8.0):
- React-Core
- RNIap (7.5.6):
- RNIap (12.4.2):
- React-Core
- RNImageCropPicker (0.35.3):
- React-Core
@ -958,7 +958,7 @@ SPEC CHECKSUMS:
RNFBDynamicLinks: 538840f6e3f58511f857d15df1bc25ed655dc283
RNFBMessaging: 40dac204b4197a2661dec5be964780c6ec39bf65
RNGestureHandler: 62232ba8f562f7dea5ba1b3383494eb5bf97a4d3
RNIap: d248609d1b8937e63bd904e865c318e9b1457eff
RNIap: e17233fe11083a71e0420682b0b09d497861faa1
RNImageCropPicker: 08ba3a2e2f4f8833d606f01906c371e382c4dea9
RNNotifee: dcb2593127f40945c4ee5fc09f61d71bbd00b9cf
RNOS: 6f2f9a70895bbbfbdad7196abd952e7b01d45027
@ -974,6 +974,6 @@ SPEC CHECKSUMS:
toolbar-android: 2a73856e98b750d7e71ce4644d3f41cc98211719
Yoga: 2ed968a4f060a92834227c036279f2736de0fce3
PODFILE CHECKSUM: 349fd1005f5ffc6e775051d22702d58ab1632517
PODFILE CHECKSUM: 36d29e2c20cdf9c60df8598f3eb180df6812c820
COCOAPODS: 1.11.3

View File

@ -111,7 +111,7 @@
"react-native-fingerprint-scanner": "hieuvp/react-native-fingerprint-scanner",
"react-native-gesture-handler": "^2.8.0",
"react-native-highlight-words": "^1.0.1",
"react-native-iap": "^7.5.6",
"react-native-iap": "^12.4.2",
"react-native-image-crop-picker": "^0.35.2",
"react-native-image-zoom-viewer": "^2.2.27",
"react-native-iphone-x-helper": "Norcy/react-native-iphone-x-helper",

View File

@ -1,8 +1,8 @@
/* eslint-disable no-unused-vars */
import React, { Component } from 'react';
import { connect } from 'react-redux';
import { Platform, Alert } from 'react-native';
import RNIap, { purchaseErrorListener, purchaseUpdatedListener } from 'react-native-iap';
import { Platform, Alert, EmitterSubscription } from 'react-native';
import * as IAP from 'react-native-iap';
import { injectIntl } from 'react-intl';
import get from 'lodash/get';
@ -17,9 +17,9 @@ import { showActionModal } from '../redux/actions/uiAction';
import { UserAvatar } from '../components';
class InAppPurchaseContainer extends Component {
purchaseUpdateSubscription = null;
purchaseUpdateSubscription: EmitterSubscription | null = null;
purchaseErrorSubscription = null;
purchaseErrorSubscription: EmitterSubscription | null = null;
constructor(props) {
super(props);
@ -45,15 +45,15 @@ class InAppPurchaseContainer extends Component {
this.purchaseErrorSubscription.remove();
this.purchaseErrorSubscription = null;
}
RNIap.endConnection();
IAP.endConnection();
}
_initContainer = async () => {
const { intl } = this.props;
try {
await RNIap.initConnection();
await IAP.initConnection();
if (Platform.OS === 'android') {
await RNIap.flushFailedPurchasesCachedAsPendingAndroid();
await IAP.flushFailedPurchasesCachedAsPendingAndroid();
}
await this._consumeAvailablePurchases();
@ -78,11 +78,14 @@ class InAppPurchaseContainer extends Component {
_consumeAvailablePurchases = async () => {
try {
// get available purchase
const purchases = await RNIap.getAvailablePurchases();
const purchases = await IAP.getAvailablePurchases();
// check consumeable status
for (let i = 0; i < purchases.length; i++) {
// consume item using finishTransactionx
await RNIap.finishTransaction(purchases[i], true);
await IAP.finishTransaction({
purchase: purchases[i],
isConsumable: true,
});
}
} catch (err) {
bugsnagInstance.notify(err);
@ -100,7 +103,7 @@ class InAppPurchaseContainer extends Component {
username,
} = this.props;
this.purchaseUpdateSubscription = purchaseUpdatedListener((purchase) => {
this.purchaseUpdateSubscription = IAP.purchaseUpdatedListener((purchase) => {
const receipt = get(purchase, 'transactionReceipt');
const token = get(purchase, 'purchaseToken');
@ -115,7 +118,10 @@ class InAppPurchaseContainer extends Component {
purchaseOrder(data)
.then(async () => {
try {
const ackResult = await RNIap.finishTransaction(purchase, true);
const ackResult = await IAP.finishTransaction({
purchase,
isConsumable: true,
});
console.info('ackResult', ackResult);
} catch (ackErr) {
console.warn('ackErr', ackErr);
@ -135,7 +141,7 @@ class InAppPurchaseContainer extends Component {
}
});
this.purchaseErrorSubscription = purchaseErrorListener((error) => {
this.purchaseErrorSubscription = IAP.purchaseErrorListener((error) => {
bugsnagInstance.notify(error);
if (get(error, 'responseCode') === '3' && Platform.OS === 'android') {
Alert.alert(
@ -169,14 +175,14 @@ class InAppPurchaseContainer extends Component {
};
_getItems = async () => {
const { skus } = this.props;
const { skus, intl } = this.props;
try {
const products = await RNIap.getProducts(skus);
const products = await IAP.getProducts({ skus });
console.log(products);
products.sort((a, b) => parseFloat(a.price) - parseFloat(b.price)).reverse();
this.setState({ productList: products });
} catch (err) {
bugsnagInstance.notify(err);
} catch (error) {
bugsnagInstance.notify(error);
Alert.alert(
intl.formatMessage({
id: 'alert.connection_issues',
@ -192,10 +198,10 @@ class InAppPurchaseContainer extends Component {
const { navigation } = this.props;
if (sku !== 'freePoints') {
await this.setState({ isProcessing: true });
this.setState({ isProcessing: true });
try {
RNIap.requestPurchase(sku, false);
IAP.requestPurchase(Platform.OS === 'ios' ? { sku } : { skus: [sku] });
} catch (err) {
bugsnagInstance.notify(err, (report) => {
report.addMetadata('sku', sku);
@ -210,11 +216,11 @@ class InAppPurchaseContainer extends Component {
_handleQrPurchase = async () => {
const { skus, dispatch, intl, route } = this.props;
const products = await RNIap.getProducts(skus);
const products = await IAP.getProducts({ skus });
const productId = route.param?.productId ?? '';
const username = route.param?.username ?? '';
const product: Product =
const product: IAP.Product =
productId && products && products.find((product) => product.productId === productId);
if (product) {

View File

@ -4329,11 +4329,6 @@ domutils@^3.0.1:
domelementtype "^2.3.0"
domhandler "^5.0.1"
dooboolab-welcome@1.3.2:
version "1.3.2"
resolved "https://registry.yarnpkg.com/dooboolab-welcome/-/dooboolab-welcome-1.3.2.tgz#4928595312f0429b4ea1b485ba8767bae6acdab7"
integrity sha512-2NbMaIIURElxEf/UAoVUFlXrO+7n/FRhLCiQlk4fkbGRh9cJ3/f8VEMPveR9m4Ug2l2Zey+UCXjd6EcBqHJ5bw==
dottie@^2.0.0:
version "2.0.2"
resolved "https://registry.yarnpkg.com/dottie/-/dottie-2.0.2.tgz#cc91c0726ce3a054ebf11c55fbc92a7f266dd154"
@ -9217,12 +9212,10 @@ react-native-highlight-words@^1.0.1:
highlight-words-core "^1.0.3"
prop-types "^15.5.7"
react-native-iap@^7.5.6:
version "7.5.6"
resolved "https://registry.yarnpkg.com/react-native-iap/-/react-native-iap-7.5.6.tgz#75a370f0a689da4fbe5ecf2cd9b7bdd0f7d20f2f"
integrity sha512-ua+KTq7NO+/Rw+S9cGDZizR45AdmpQ0LEx9gSubbRD3f5KSTp91mEMHgdyVcqUcxiBuVgRTfv3zy9mbPEdo8Mg==
dependencies:
dooboolab-welcome "1.3.2"
react-native-iap@^12.4.2:
version "12.4.2"
resolved "https://registry.yarnpkg.com/react-native-iap/-/react-native-iap-12.4.2.tgz#98f4a4f653f8beb7324cab5bb333308cc46d63a1"
integrity sha512-pl4mgkYQOf5uQPt5NX5ySW6+JhOhalvbqw+fGJ5lJ+ZxnDF/UMNEw6SWWjNF7XrU8X7yGkWamOHmco4RDPlFYg==
react-native-image-crop-picker@^0.35.2:
version "0.35.3"