Skip to content

Commit

Permalink
Release 2.3.25.
Browse files Browse the repository at this point in the history
Revert all the async as discussed in #295.
  • Loading branch information
hyochan committed Dec 18, 2018
1 parent ecdba2d commit 2db337a
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 45 deletions.
2 changes: 2 additions & 0 deletions android/src/main/java/com/dooboolab/RNIap/RNIapModule.java
Expand Up @@ -192,6 +192,8 @@ public void run() {
}
promise.resolve("All items have been consumed");
Log.d(TAG, "All items have been consumed");
} else {
promise.reject(E_UNKNOWN, "response: " + response);
}
} catch (Exception e) {
promise.reject(E_UNKNOWN, e.getMessage());
Expand Down
88 changes: 44 additions & 44 deletions index.js
Expand Up @@ -12,7 +12,7 @@ const IOS_ITEM_TYPE_IAP = 'iap';
* @deprecated Deprecated since 2.0.0. Use initConnection instead.
* @returns {Promise<void>}
*/
export const prepare = async() => {
export const prepare = () => {
console.warn('The `prepare` method is deprecated. Use initConnection method instead.');
Platform.select({
ios: async() => RNIapIos.canMakePayments(),
Expand All @@ -24,57 +24,57 @@ export const prepare = async() => {
* Init module for purchase flow. Required on Android. In ios it will check wheter user canMakePayment.
* @returns {Promise<string>}
*/
export const initConnection = async() => Platform.select({
ios: async() => RNIapIos.canMakePayments(),
android: async() => RNIapModule.initConnection(),
export const initConnection = () => Platform.select({
ios: () => RNIapIos.canMakePayments(),
android: () => RNIapModule.initConnection(),
})();

/**
* End module for purchase flow. Required on Android. No-op on iOS.
* @returns {Promise<void>}
*/
export const endConnection = async() => Platform.select({
ios: async() => Promise.resolve(),
android: async() => RNIapModule.endConnection(),
export const endConnection = () => Platform.select({
ios: () => Promise.resolve(),
android: () => RNIapModule.endConnection(),
})();

/**
* Consume all remaining tokens. Android only.
* @returns {Promise<void>}
*/
export const consumeAllItems = async() => Platform.select({
ios: async() => Promise.resolve(),
android: async() => RNIapModule.refreshItems(),
export const consumeAllItems = () => Platform.select({
ios: () => Promise.resolve(),
android: () => RNIapModule.refreshItems(),
})();

/**
* Get a list of products (consumable and non-consumable items, but not subscriptions)
* @param {string[]} skus The item skus
* @returns {Promise<Product[]>}
*/
export const getProducts = async(skus) => Platform.select({
ios: async() => RNIapIos.getItems(skus)
export const getProducts = (skus) => Platform.select({
ios: () => RNIapIos.getItems(skus)
.then((items) => items.filter((item) => item.productId)),
android: async() => RNIapModule.getItemsByType(ANDROID_ITEM_TYPE_IAP, skus),
android: () => RNIapModule.getItemsByType(ANDROID_ITEM_TYPE_IAP, skus),
})();

/**
* Get a list of subscriptions
* @param {string[]} skus The item skus
* @returns {Promise<Subscription[]>}
*/
export const getSubscriptions = async(skus) => Platform.select({
ios: async() => RNIapIos.getItems(skus)
export const getSubscriptions = (skus) => Platform.select({
ios: () => RNIapIos.getItems(skus)
.then((items) => items.filter((item) => item.productId)),
android: async() => RNIapModule.getItemsByType(ANDROID_ITEM_TYPE_SUBSCRIPTION, skus),
android: () => RNIapModule.getItemsByType(ANDROID_ITEM_TYPE_SUBSCRIPTION, skus),
})();

/**
* Gets an invetory of purchases made by the user regardless of consumption status
* @returns {Promise<Purchase[]>}
*/
export const getPurchaseHistory = async() => Platform.select({
ios: async() => RNIapIos.getAvailableItems(),
export const getPurchaseHistory = () => Platform.select({
ios: () => RNIapIos.getAvailableItems(),
android: async() => {
let products = await RNIapModule.getPurchaseHistoryByType(ANDROID_ITEM_TYPE_IAP);
let subscriptions = await RNIapModule.getPurchaseHistoryByType(ANDROID_ITEM_TYPE_SUBSCRIPTION);
Expand All @@ -86,8 +86,8 @@ export const getPurchaseHistory = async() => Platform.select({
* Get all purchases made by the user (either non-consumable, or haven't been consumed yet)
* @returns {Promise<Purchase[]>}
*/
export const getAvailablePurchases = async() => Platform.select({
ios: async() => RNIapIos.getAvailableItems(),
export const getAvailablePurchases = () => Platform.select({
ios: () => RNIapIos.getAvailableItems(),
android: async() => {
let products = await RNIapModule.getAvailableItemsByType(ANDROID_ITEM_TYPE_IAP);
let subscriptions = await RNIapModule.getAvailableItemsByType(ANDROID_ITEM_TYPE_SUBSCRIPTION);
Expand All @@ -102,10 +102,10 @@ export const getAvailablePurchases = async() => Platform.select({
* @param {number} [prorationMode] Optional proration mode for upgrade/downgrade (Android only)
* @returns {Promise<SubscriptionPurchase>}
*/
export const buySubscription = async(sku, oldSku, prorationMode) => {
export const buySubscription = (sku, oldSku, prorationMode) => {
return Platform.select({
ios: async() => RNIapIos.buyProduct(sku),
android: async() => {
ios: () => RNIapIos.buyProduct(sku),
android: () => {
if (!prorationMode) prorationMode = -1;
return RNIapModule.buyItemByType(ANDROID_ITEM_TYPE_SUBSCRIPTION, sku, oldSku, prorationMode);
},
Expand All @@ -117,9 +117,9 @@ export const buySubscription = async(sku, oldSku, prorationMode) => {
* @param {string} sku The product's sku/ID
* @returns {Promise<ProductPurchase>}
*/
export const buyProduct = async(sku) => Platform.select({
ios: async() => RNIapIos.buyProduct(sku),
android: async() => RNIapModule.buyItemByType(ANDROID_ITEM_TYPE_IAP, sku, null, 0),
export const buyProduct = (sku) => Platform.select({
ios: () => RNIapIos.buyProduct(sku),
android: () => RNIapModule.buyItemByType(ANDROID_ITEM_TYPE_IAP, sku, null, 0),
})();

/**
Expand All @@ -128,9 +128,9 @@ export const buyProduct = async(sku) => Platform.select({
* @param {number} quantity The amount of product to buy
* @returns {Promise<ProductPurchase>}
*/
export const buyProductWithQuantityIOS = async(sku, quantity) => Platform.select({
ios: async() => RNIapIos.buyProductWithQuantityIOS(sku, quantity),
android: async() => Promise.resolve(),
export const buyProductWithQuantityIOS = (sku, quantity) => Platform.select({
ios: () => RNIapIos.buyProductWithQuantityIOS(sku, quantity),
android: () => Promise.resolve(),
})();

/**
Expand All @@ -139,19 +139,19 @@ export const buyProductWithQuantityIOS = async(sku, quantity) => Platform.select
* @param {string} sku The product's sku/ID
* @returns {Promise<ProductPurchase>}
*/
export const buyProductWithoutFinishTransaction = async(sku) => Platform.select({
ios: async() => RNIapIos.buyProductWithoutAutoConfirm(sku),
android: async() => RNIapModule.buyItemByType(ANDROID_ITEM_TYPE_IAP, sku, null, 0),
export const buyProductWithoutFinishTransaction = (sku) => Platform.select({
ios: () => RNIapIos.buyProductWithoutAutoConfirm(sku),
android: () => RNIapModule.buyItemByType(ANDROID_ITEM_TYPE_IAP, sku, null, 0),
})();

/**
* Finish Transaction (iOS only)
* Explicitly call transaction finish
* @returns {Promise<ProductPurchase>}
*/
export const finishTransaction = async() => Platform.select({
ios: async() => RNIapIos.finishTransaction(),
android: async() => Promise.resolve(),
export const finishTransaction = () => Platform.select({
ios: () => RNIapIos.finishTransaction(),
android: () => Promise.resolve(),
})();

/**
Expand All @@ -160,29 +160,29 @@ export const finishTransaction = async() => Platform.select({
* link : https://github.com/dooboolab/react-native-iap/issues/257
* @returns {null}
*/
export const clearTransaction = async() => Platform.select({
ios: async() => RNIapIos.clearTransaction(),
android: async() => Promise.resolve(),
export const clearTransaction = () => Platform.select({
ios: () => RNIapIos.clearTransaction(),
android: () => Promise.resolve(),
})();

/**
* Clear valid Products (iOS only)
* Remove all products which are validated by Apple server.
* @returns {null}
*/
export const clearProducts = async() => Platform.select({
ios: async() => RNIapIos.clearProducts(),
android: async() => Promise.resolve,
export const clearProducts = () => Platform.select({
ios: () => RNIapIos.clearProducts(),
android: () => Promise.resolve,
})();

/**
* Consume a product (on Android.) No-op on iOS.
* @param {string} token The product's token (on Android)
* @returns {Promise}
*/
export const consumePurchase = async(token) => Platform.select({
ios: async() => Promise.resolve(), // Consuming is a no-op on iOS, as soon as the product is purchased it is considered consumed.
android: async() => RNIapModule.consumeProduct(token),
export const consumePurchase = (token) => Platform.select({
ios: () => Promise.resolve(), // Consuming is a no-op on iOS, as soon as the product is purchased it is considered consumed.
android: () => RNIapModule.consumeProduct(token),
})();

/**
Expand Down
2 changes: 1 addition & 1 deletion package.json
@@ -1,6 +1,6 @@
{
"name": "react-native-iap",
"version": "2.3.23",
"version": "2.3.25",
"description": "React Native In App Purchase Module.",
"main": "index.js",
"types": "index.d.ts",
Expand Down

0 comments on commit 2db337a

Please sign in to comment.