New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details
Socket
Book a DemoSign in
Socket

react-native-rnx

Package Overview
Dependencies
Maintainers
1
Versions
710
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-native-rnx - npm Package Compare versions

Comparing version
0.5.90
to
0.5.92
+0
-11
lib/commonjs/index.js

@@ -72,13 +72,2 @@ "use strict";

});
var _iap = require("./iap");
Object.keys(_iap).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
if (key in exports && exports[key] === _iap[key]) return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function () {
return _iap[key];
}
});
});
var _rate = require("./rate");

@@ -85,0 +74,0 @@ Object.keys(_rate).forEach(function (key) {

+1
-1

@@ -1,1 +0,1 @@

{"version":3,"names":["_navigation","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_theme","_ui","_localization","_utils","_store","_iap","_rate"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
{"version":3,"names":["_navigation","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_theme","_ui","_localization","_utils","_store","_rate"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}

@@ -9,4 +9,3 @@ "use strict";

export * from './store';
export * from './iap';
export * from './rate';
//# sourceMappingURL=index.js.map

@@ -1,1 +0,1 @@

{"version":3,"names":[],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,cAAc,cAAc;AAC5B,cAAc,SAAS;AACvB,cAAc,MAAM;AACpB,cAAc,gBAAgB;AAC9B,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,OAAO;AACrB,cAAc,QAAQ","ignoreList":[]}
{"version":3,"names":[],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,cAAc,cAAc;AAC5B,cAAc,SAAS;AACvB,cAAc,MAAM;AACpB,cAAc,gBAAgB;AAC9B,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,QAAQ","ignoreList":[]}

@@ -7,4 +7,3 @@ export * from './navigation';

export * from './store';
export * from './iap';
export * from './rate';
//# sourceMappingURL=index.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,MAAM,CAAC;AACrB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,MAAM,CAAC;AACrB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC"}
{
"name": "react-native-rnx",
"version": "0.5.90",
"version": "0.5.92",
"description": "BerthX libs",

@@ -74,3 +74,2 @@ "react-native": "src/index",

"react-native-gesture-handler": "^1.10.3",
"react-native-iap": "^12.2.0",
"react-native-localize": "^2.0.2",

@@ -98,3 +97,2 @@ "react-native-rate": "^1.2.6",

"react-native-gesture-handler": "^1.10.3",
"react-native-iap": "^6.0.6",
"react-native-localize": "^2.0.2",

@@ -101,0 +99,0 @@ "react-native-rate": "^1.2.6",

@@ -7,3 +7,2 @@ export * from './navigation';

export * from './store';
export * from './iap';
export * from './rate';
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.requestPurchase = exports.initIAP = exports.hasPurchasedPremium = exports.getIapSubscriptions = exports.closeIAP = void 0;
var _reactNative = require("react-native");
var _reactNativeIap = require("react-native-iap");
let PREMIUM_PRODUCT_LIST = [];
let purchaseUpdatedSubscription;
let purchaseErrorSubscription;
let onPurchaseSuccess;
let onPurchaseError;
const initIAP = premiumSubscriptionIds => {
PREMIUM_PRODUCT_LIST = premiumSubscriptionIds;
try {
console.log('[rnx] initIAP initConnection');
// Init connection to store
(0, _reactNativeIap.initConnection)().then(async () => {
// Clear pending transactions depending on devices
if (_reactNative.Platform.OS === 'android') {
// we make sure that "ghost" pending payment are removed
// (ghost = failed pending payment that are still marked as pending in Google's native Vending module cache)
console.log('[rnx] initIAP flushFailedPurchasesCachedAsPendingAndroid');
await (0, _reactNativeIap.flushFailedPurchasesCachedAsPendingAndroid)().catch(e => {
console.log('[rnx] initIAP flushFailedPurchasesCachedAsPendingAndroid error', e);
// exception can happen here if:
// - there are pending purchases that are still pending (we can't consume a pending purchase)
// in any case, you might not want to do anything special with the error
});
} else if (_reactNative.Platform.OS === 'ios') {
console.log('[rnx] initIAP clearTransactionIOS');
await (0, _reactNativeIap.clearTransactionIOS)();
}
// Start purchase listeners
console.log('[rnx] initIAP listen purchaseUpdatedListener');
// Case purchase error
purchaseErrorSubscription = (0, _reactNativeIap.purchaseErrorListener)(error => {
console.log('[rnx] IAP purchaseErrorListener triggered error', error);
onPurchaseError && onPurchaseError();
});
// Case purchase success
purchaseUpdatedSubscription = (0, _reactNativeIap.purchaseUpdatedListener)(async purchase => {
console.log('[rnx] IAP purchaseUpdatedListener triggered purchase', purchase);
await (0, _reactNativeIap.finishTransaction)({
purchase,
isConsumable: false
});
if (PREMIUM_PRODUCT_LIST.map(p => p.id.toLocaleLowerCase()).includes(purchase.productId.toLocaleLowerCase())) {
onPurchaseSuccess && onPurchaseSuccess(purchase.productId);
} else {
console.log('[rnx] IAP purchaseUpdatedListener error, purchase product id does not match our list of products', purchase.productId);
}
});
});
} catch (e) {
console.error('[rnx] initIAP error', e);
}
};
exports.initIAP = initIAP;
const closeIAP = () => {
console.log('[rnx] closeIAP endConnection');
if (purchaseUpdatedSubscription) {
purchaseUpdatedSubscription.remove();
purchaseUpdatedSubscription = undefined;
}
if (purchaseErrorSubscription) {
purchaseErrorSubscription.remove();
purchaseErrorSubscription = undefined;
}
(0, _reactNativeIap.endConnection)();
};
exports.closeIAP = closeIAP;
const checkInitGuard = () => {
if (!PREMIUM_PRODUCT_LIST.length) {
throw '[rnx] You need to call initIAP first';
}
};
const hasPurchasedPremium = async () => {
checkInitGuard();
try {
console.log('[rnx] hasPurchasedPremium getAvailablePurchases');
const purchases = await (0, _reactNativeIap.getAvailablePurchases)();
console.log('[rnx] hasPurchasedPremium purchases.length', purchases.length, 'ids', purchases.map(p => p.productId));
return !!purchases.find(p => PREMIUM_PRODUCT_LIST.filter(p2 => p.productId.toLocaleLowerCase() === p2.id.toLocaleLowerCase()).length);
} catch (e) {
console.log('[rnx] restore error', e);
return Promise.reject();
}
};
exports.hasPurchasedPremium = hasPurchasedPremium;
const requestPurchase = async subscription => {
checkInitGuard();
try {
console.log('[rnx] requestPurchase');
await (0, _reactNativeIap.requestSubscription)({
sku: subscription.id,
andDangerouslyFinishTransactionAutomaticallyIOS: false,
// OfferToken will be only filled for android
...(subscription.offerToken && {
subscriptionOffers: [{
sku: subscription.id,
offerToken: subscription.offerToken
}]
})
});
console.log('[rnx] requestPurchase done');
return new Promise(resolve => {
onPurchaseSuccess = sku => {
console.log('[rnx] requestPurchase onPurchaseSuccess triggered for product', sku);
if (PREMIUM_PRODUCT_LIST.map(p => p.id.toLocaleLowerCase()).includes(sku.toLocaleLowerCase())) {
console.log('[rnx] requestPurchase onPurchaseSuccess productId found. Purchase validated');
return resolve(true);
} else {
console.log('[rnx] requestPurchase onPurchaseSuccess productId not matching');
return resolve(false);
}
};
onPurchaseError = () => {
console.log('[rnx] requestPurchase onPurchaseError triggered');
return resolve(false);
};
});
} catch (e) {
console.log('[rnx] requestPurchase error', e);
return Promise.reject();
}
};
exports.requestPurchase = requestPurchase;
const getIapSubscriptions = async () => {
checkInitGuard();
console.log('[rnx] getIapSubscriptions');
const products = await (0, _reactNativeIap.getSubscriptions)({
skus: PREMIUM_PRODUCT_LIST.map(o => o.id)
});
console.log('[rnx] getIapSubscriptions products.length', products.length);
if (products && products.length) {
return products.map(p => {
const base = PREMIUM_PRODUCT_LIST.find(p2 => p2.id === p.productId);
// Convert android sub
if (p.platform === _reactNativeIap.SubscriptionPlatform.android) {
const platformProduct = p;
const prices = platformProduct.subscriptionOfferDetails[0].pricingPhases.pricingPhaseList.find(_p => _p.formattedPrice.toLocaleLowerCase() !== 'free') || platformProduct.subscriptionOfferDetails[0].pricingPhases.pricingPhaseList[platformProduct.subscriptionOfferDetails[0].pricingPhases.pricingPhaseList.length - 1];
return {
id: platformProduct.productId,
price: parseFloat(prices.priceAmountMicros) / 1000000,
localizedPrice: prices.formattedPrice,
durationMonth: base?.durationMonth || 0,
freeTrialDaysDuration: base?.freeTrialDaysDuration,
offerToken: platformProduct.subscriptionOfferDetails[0].offerToken
};
}
// Convert ios sub
const platformProduct = p;
return {
id: platformProduct.productId,
price: parseFloat(platformProduct.price),
localizedPrice: platformProduct.localizedPrice,
durationMonth: base?.durationMonth || 0,
freeTrialDaysDuration: base?.freeTrialDaysDuration
};
});
}
return [];
};
exports.getIapSubscriptions = getIapSubscriptions;
//# sourceMappingURL=IAPService.js.map
{"version":3,"names":["_reactNative","require","_reactNativeIap","PREMIUM_PRODUCT_LIST","purchaseUpdatedSubscription","purchaseErrorSubscription","onPurchaseSuccess","onPurchaseError","initIAP","premiumSubscriptionIds","console","log","initConnection","then","Platform","OS","flushFailedPurchasesCachedAsPendingAndroid","catch","e","clearTransactionIOS","purchaseErrorListener","error","purchaseUpdatedListener","purchase","finishTransaction","isConsumable","map","p","id","toLocaleLowerCase","includes","productId","exports","closeIAP","remove","undefined","endConnection","checkInitGuard","length","hasPurchasedPremium","purchases","getAvailablePurchases","find","filter","p2","Promise","reject","requestPurchase","subscription","requestSubscription","sku","andDangerouslyFinishTransactionAutomaticallyIOS","offerToken","subscriptionOffers","resolve","getIapSubscriptions","products","getSubscriptions","skus","o","base","platform","SubscriptionPlatform","android","platformProduct","prices","subscriptionOfferDetails","pricingPhases","pricingPhaseList","_p","formattedPrice","price","parseFloat","priceAmountMicros","localizedPrice","durationMonth","freeTrialDaysDuration"],"sourceRoot":"../../../src","sources":["iap/IAPService.ts"],"mappings":"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","ignoreList":[]}
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _useIsPremium = require("./useIsPremium");
Object.keys(_useIsPremium).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
if (key in exports && exports[key] === _useIsPremium[key]) return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function () {
return _useIsPremium[key];
}
});
});
var _IAPService = require("./IAPService");
Object.keys(_IAPService).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
if (key in exports && exports[key] === _IAPService[key]) return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function () {
return _IAPService[key];
}
});
});
var _UpgradeView = require("./UpgradeView");
Object.keys(_UpgradeView).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
if (key in exports && exports[key] === _UpgradeView[key]) return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function () {
return _UpgradeView[key];
}
});
});
var _useUpgrade = require("./useUpgrade");
Object.keys(_useUpgrade).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
if (key in exports && exports[key] === _useUpgrade[key]) return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function () {
return _useUpgrade[key];
}
});
});
var _usePremiumGuard = require("./usePremiumGuard");
Object.keys(_usePremiumGuard).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
if (key in exports && exports[key] === _usePremiumGuard[key]) return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function () {
return _usePremiumGuard[key];
}
});
});
//# sourceMappingURL=index.js.map
{"version":3,"names":["_useIsPremium","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_IAPService","_UpgradeView","_useUpgrade","_usePremiumGuard"],"sourceRoot":"../../../src","sources":["iap/index.ts"],"mappings":";;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,aAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,aAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,aAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,WAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,WAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,WAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,WAAA,CAAAL,GAAA;IAAA;EAAA;AAAA;AACA,IAAAM,YAAA,GAAAV,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAQ,YAAA,EAAAP,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAM,YAAA,CAAAN,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,YAAA,CAAAN,GAAA;IAAA;EAAA;AAAA;AACA,IAAAO,WAAA,GAAAX,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAS,WAAA,EAAAR,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAO,WAAA,CAAAP,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAG,WAAA,CAAAP,GAAA;IAAA;EAAA;AAAA;AACA,IAAAQ,gBAAA,GAAAZ,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAU,gBAAA,EAAAT,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAQ,gBAAA,CAAAR,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAI,gBAAA,CAAAR,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.UpgradeViewSheet = void 0;
var _react = _interopRequireWildcard(require("react"));
var _reactNative = require("react-native");
var _reactNativeRnx = require("react-native-rnx");
var _FontAwesome = _interopRequireDefault(require("react-native-vector-icons/FontAwesome5"));
var _reactNativeLinearGradient = _interopRequireDefault(require("react-native-linear-gradient"));
var _jsxRuntime = require("react/jsx-runtime");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
const getCurrency = str => {
return str.replace(/[\d,. ]+/, '');
};
const Component = ({
screenHeight,
onCancel,
onContinue
}) => {
const {
localize
} = (0, _reactNativeRnx.useLocalization)();
const theme = (0, _reactNativeRnx.useTheme)();
const [iapList, setIapList] = (0, _react.useState)();
const [selectedIap, setSelectedIap] = (0, _react.useState)();
const [isLoading, setIsLoading] = (0, _react.useState)(true);
const [isLoadingRestore, setIsLoadingRestore] = (0, _react.useState)(false);
const [isLoadingPurchase, setIsLoadingPurchase] = (0, _react.useState)(false);
const {
setIsPremium
} = (0, _reactNativeRnx.useIsPremium)();
(0, _react.useEffect)(() => {
(0, _reactNativeRnx.getIapSubscriptions)().then(list => {
const usableList = list.filter(l => l.durationMonth === 1 || l.durationMonth === 12);
setIapList(usableList.sort((a, b) => a.price - b.price));
setSelectedIap(usableList.find(p => !!p.freeTrialDaysDuration) || usableList[0]);
setIsLoading(false);
});
}, [setIapList, setIsLoading]);
const _close = (0, _react.useCallback)(() => {
onCancel();
}, [onCancel]);
const _success = (0, _react.useCallback)(() => {
_reactNative.Alert.alert(localize('iap.successtitle'), localize('iap.successmsg'), [{
text: localize('iap.continue'),
onPress: () => {
if (onContinue) {
onContinue();
} else {
console.log('[rnx] UpgradeView close from _success');
_close();
}
}
}]);
}, [localize, onContinue, _close]);
const _restore = (0, _react.useCallback)(() => {
console.log('restore');
setIsLoadingRestore(true);
(0, _reactNativeRnx.hasPurchasedPremium)().then(hasPurchase => {
setIsPremium(hasPurchase);
setIsLoadingRestore(false);
if (hasPurchase) {
_success();
} else {
_reactNative.Alert.alert(localize('iap.restoreerrortitle'), localize('iap.restoreerrormsg'));
}
});
}, [setIsPremium, localize, _success]);
const _subscribe = (0, _react.useCallback)(() => {
if (selectedIap) {
setIsLoadingPurchase(true);
(0, _reactNativeRnx.hasPurchasedPremium)().then(hasPurchase => {
if (hasPurchase) {
setIsPremium(true);
setIsLoadingPurchase(false);
_success();
} else {
(0, _reactNativeRnx.requestPurchase)(selectedIap).then(_hasPurchase => {
setIsPremium(_hasPurchase);
setIsLoadingPurchase(false);
if (_hasPurchase) {
_success();
} else {
_reactNative.Alert.alert(localize('iap.purchaseerrortitle'), localize('iap.purchaseerrormsg'));
}
}, () => {
// Error/canceled
setIsLoadingPurchase(false);
});
}
});
}
}, [setIsLoadingPurchase, selectedIap, localize, setIsPremium, _success]);
const _openTerms = (0, _react.useCallback)(() => {
_reactNative.Linking.openURL('https://berthx.io/terms/');
}, []);
const _openPrivacy = (0, _react.useCallback)(() => {
_reactNative.Linking.openURL('https://berthx.io/policy/');
}, []);
const _skip = (0, _react.useCallback)(() => {
console.log('[rnx] UpgradeView close from _skip');
_close();
}, [_close]);
const _tapClose = (0, _react.useCallback)(() => {
console.log('[rnx] UpgradeView close from _tapClose');
_close();
}, [_close]);
console.log('[rnx] UpgradeView render');
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
style: [styles.root, {
height: screenHeight
}],
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Image, {
source: require('@assets/images/iap/bg.jpg'),
style: [styles.headerImg, {
backgroundColor: theme.borderColor
}],
resizeMode: "cover"
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Image, {
source: require('@assets/images/iap/bg-hd.jpg'),
style: [styles.headerImg, {
backgroundColor: theme.borderColor
}],
resizeMode: "cover"
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
style: styles.content,
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeLinearGradient.default, {
colors: ['rgba(0, 0, 0, 0.6)', 'transparent'],
style: styles.featuresBackdropTop
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
style: styles.topnav,
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
style: styles.topnavLeft,
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
style: [styles.topnavBtn],
onPress: _tapClose,
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_FontAwesome.default, {
name: "times",
color: "white",
size: 18
})
})
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeRnx.Text, {
style: styles.topnavTitle,
children: localize('iap.title')
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
style: styles.topnavRight,
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
style: [styles.topnavBtn],
onPress: _restore,
disabled: isLoading || isLoadingRestore || isLoadingPurchase,
children: isLoadingRestore ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
color: "white"
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeRnx.Text, {
style: styles.topnavBtnTxt,
children: localize('iap.restore')
})
})
})]
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
style: styles.featuresContainer,
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeLinearGradient.default, {
colors: ['transparent', 'rgba(0, 0, 0, 0.9)'],
style: styles.featuresBackdrop
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeRnx.Text, {
style: styles.featuresTitle,
children: localize('iap.featurestitle')
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeRnx.Text, {
style: styles.featuresTxt,
children: localize('iap.features')
})]
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
style: [styles.bottomContent, {
backgroundColor: theme.bgColor
}],
children: [iapList?.map(iap => /*#__PURE__*/(0, _jsxRuntime.jsx)(SubscribeRow, {
isActive: iap.id === selectedIap?.id,
iap: iap,
onPress: setSelectedIap
}, iap.id)), isLoading && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
style: styles.loadingRows,
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
size: "large"
})
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.TouchableOpacity, {
onPress: _subscribe,
activeOpacity: 0.6,
disabled: isLoading || isLoadingRestore || isLoadingPurchase,
style: [styles.btnMain, {
backgroundColor: theme.primaryColor
}],
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
style: styles.btnMainTitleContainer,
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeRnx.Text, {
style: [styles.btnMainTitle, {
color: theme.txtColorOnPrimaryColor
}],
children: localize('iap.btnMain')
}), selectedIap?.freeTrialDaysDuration && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeRnx.Text, {
style: [styles.btnMainSubtitle, {
color: theme.txtColorOnPrimaryColor
}],
children: localize('iap.autodeductAfter', {
x: selectedIap.freeTrialDaysDuration
})
})]
}), isLoadingPurchase ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
style: styles.btnMainArrow,
color: theme.txtColorOnPrimaryColor
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_FontAwesome.default, {
name: "chevron-right",
size: 20,
color: theme.txtColorOnPrimaryColor,
style: styles.btnMainArrow
})]
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeRnx.Link, {
style: styles.skip,
title: localize('iap.skip'),
onPress: _skip
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeRnx.Text, {
style: styles.disclaimer,
children: localize('iap.disclaimer')
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
style: styles.policies,
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeRnx.Link, {
title: localize('iap.terms'),
onPress: _openTerms
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeRnx.Link, {
title: localize('iap.privacy'),
onPress: _openPrivacy
})]
})]
})]
})]
});
};
const SubscribeRow = props => {
const theme = (0, _reactNativeRnx.useTheme)();
const {
localize
} = (0, _reactNativeRnx.useLocalization)();
const {
iap
} = props;
const isDarkTheme = (0, _reactNative.useColorScheme)() === 'dark';
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.TouchableOpacity, {
onPress: () => props.onPress(iap),
activeOpacity: 0.8,
style: [styles.row, props.isActive && (isDarkTheme ? styles.rowActiveDark : styles.rowActive)],
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
style: [styles.check, {
borderColor: theme.primaryColor
}, props.isActive && {
backgroundColor: theme.primaryColor
}],
children: props.isActive && /*#__PURE__*/(0, _jsxRuntime.jsx)(_FontAwesome.default, {
name: "check",
color: theme.txtColorOnPrimaryColor,
size: 14
})
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
style: styles.rowContent,
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
style: styles.rowTitleContainer,
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeRnx.Text, {
style: styles.rowTitle,
children: localize('iap.rowTitle', {
price: iap.localizedPrice,
duration: iap.durationMonth === 12 ? localize('iap.rowTitleYear') : localize('iap.rowTitleMonth')
})
}), iap.durationMonth !== 1 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeRnx.Text, {
style: styles.rowPricePerMonth,
children: localize('iap.rowPricePerMonth', {
price: `${getCurrency(iap.localizedPrice)}${(iap.price / iap.durationMonth).toFixed(2)}`
})
})]
}), !!iap.freeTrialDaysDuration && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeRnx.Text, {
style: [styles.rowFreeTrial, {
color: theme.primaryTxtColor
}],
children: localize('iap.freetrial', {
duration: iap.freeTrialDaysDuration
})
})]
}), !!iap.freeTrialDaysDuration && props.isActive && /*#__PURE__*/(0, _jsxRuntime.jsx)(_FontAwesome.default, {
name: "star",
solid: true,
color: "#efbb00",
size: 22
})]
});
};
const styles = _reactNative.StyleSheet.create({
root: {},
headerImg: {
height: _reactNative.Dimensions.get('window').height - 300,
width: _reactNative.Dimensions.get('window').width,
borderTopLeftRadius: 15,
borderTopRightRadius: 15,
position: 'absolute',
left: 0,
right: 0,
top: 0,
overflow: 'hidden'
},
content: {
position: 'absolute',
bottom: 0,
left: 0,
right: 0,
top: 0,
justifyContent: 'flex-end'
},
bottomContent: {
borderTopLeftRadius: 15,
borderTopRightRadius: 15,
paddingTop: 10,
paddingBottom: 20
},
row: {
paddingVertical: 10,
paddingHorizontal: 15,
marginHorizontal: 10,
borderRadius: 10,
marginVertical: 2,
flexDirection: 'row',
alignItems: 'center',
minHeight: 50
},
rowActive: {
backgroundColor: '#eee'
},
rowActiveDark: {
backgroundColor: '#222'
},
rowContent: {
flex: 1
},
rowTitleContainer: {
flexDirection: 'row'
},
check: {
borderWidth: 2,
borderRadius: 100,
height: 22,
width: 22,
justifyContent: 'center',
alignItems: 'center',
paddingLeft: 1,
marginRight: 10
},
rowTitle: {
fontWeight: '900',
fontSize: 14
},
rowPricePerMonth: {
fontWeight: '700',
fontSize: 13,
opacity: 0.7,
marginLeft: 5
},
rowFreeTrial: {
fontWeight: '900',
fontSize: 10
},
btnMain: {
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'center',
minHeight: 65,
marginHorizontal: 15,
borderRadius: 12,
marginTop: 15
},
btnMainTitleContainer: {
alignItems: 'center'
},
btnMainTitle: {
fontSize: 20,
fontWeight: '900'
},
btnMainSubtitle: {
fontSize: 10,
fontWeight: '600'
},
btnMainArrow: {
position: 'absolute',
right: 15
},
skip: {
marginTop: 10,
transform: [{
scale: 0.9
}]
},
disclaimer: {
paddingHorizontal: 20,
textAlign: 'center',
fontSize: 10,
lineHeight: 11,
marginTop: 0,
marginBottom: 0
},
policies: {
flexDirection: 'row',
justifyContent: 'center',
paddingHorizontal: 20,
transform: [{
scale: 0.8
}]
},
featuresBackdropTop: {
position: 'absolute',
left: 0,
right: 0,
top: -50,
height: 150
},
featuresBackdrop: {
position: 'absolute',
bottom: -30,
left: 0,
right: 0,
top: -50
},
featuresContainer: {
paddingHorizontal: 15,
paddingBottom: 15,
paddingTop: 0
},
featuresTitle: {
shadowColor: '#000',
shadowOffset: {
width: 0,
height: 0
},
shadowOpacity: 0.5,
shadowRadius: 5,
color: 'white',
fontWeight: '900',
fontSize: 16,
marginBottom: 8
},
featuresTxt: {
shadowColor: '#000',
shadowOffset: {
width: 0,
height: 0
},
shadowOpacity: 0.5,
shadowRadius: 5,
color: 'white',
fontWeight: '500',
fontSize: 14,
lineHeight: 20,
marginLeft: 5
},
topnav: {
flexDirection: 'row',
shadowColor: '#000',
shadowOffset: {
width: 0,
height: 0
},
shadowOpacity: 0.9,
shadowRadius: 9,
position: 'absolute',
top: 0,
right: 0,
left: 0,
zIndex: 999,
paddingVertical: 15,
alignItems: 'center'
},
topnavTitle: {
flex: 1,
textAlign: 'center',
color: 'white',
fontWeight: '900'
},
topnavBtn: {
paddingHorizontal: 10,
paddingVertical: 5
},
topnavBtnTxt: {
color: 'white',
fontWeight: '700'
},
topnavLeft: {
position: 'absolute',
left: 0,
zIndex: 9999
},
topnavRight: {
position: 'absolute',
right: 0,
zIndex: 9999
},
loadingRows: {
marginTop: 20,
marginBottom: 20
}
});
const UpgradeViewSheet = () => {
const sheet = (0, _reactNativeRnx.useBottomSheet)();
console.log('[rnx] UpgradeViewSheet render');
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Component, {
screenHeight: _reactNative.Dimensions.get('window').height - 50,
onCancel: () => sheet.hideBottomSheet()
});
};
exports.UpgradeViewSheet = UpgradeViewSheet;
var _default = exports.default = Component;
//# sourceMappingURL=UpgradeView.js.map
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeRnx","_FontAwesome","_interopRequireDefault","_reactNativeLinearGradient","_jsxRuntime","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","getCurrency","str","replace","Component","screenHeight","onCancel","onContinue","localize","useLocalization","theme","useTheme","iapList","setIapList","useState","selectedIap","setSelectedIap","isLoading","setIsLoading","isLoadingRestore","setIsLoadingRestore","isLoadingPurchase","setIsLoadingPurchase","setIsPremium","useIsPremium","useEffect","getIapSubscriptions","then","list","usableList","filter","l","durationMonth","sort","b","price","find","p","freeTrialDaysDuration","_close","useCallback","_success","Alert","alert","text","onPress","console","log","_restore","hasPurchasedPremium","hasPurchase","_subscribe","requestPurchase","_hasPurchase","_openTerms","Linking","openURL","_openPrivacy","_skip","_tapClose","jsxs","View","style","styles","root","height","children","jsx","Image","source","headerImg","backgroundColor","borderColor","resizeMode","content","colors","featuresBackdropTop","topnav","topnavLeft","TouchableOpacity","topnavBtn","name","color","size","Text","topnavTitle","topnavRight","disabled","ActivityIndicator","topnavBtnTxt","featuresContainer","featuresBackdrop","featuresTitle","featuresTxt","bottomContent","bgColor","map","iap","SubscribeRow","isActive","id","loadingRows","activeOpacity","btnMain","primaryColor","btnMainTitleContainer","btnMainTitle","txtColorOnPrimaryColor","btnMainSubtitle","x","btnMainArrow","Link","skip","title","disclaimer","policies","props","isDarkTheme","useColorScheme","row","rowActiveDark","rowActive","check","rowContent","rowTitleContainer","rowTitle","localizedPrice","duration","rowPricePerMonth","toFixed","rowFreeTrial","primaryTxtColor","solid","StyleSheet","create","Dimensions","width","borderTopLeftRadius","borderTopRightRadius","position","left","right","top","overflow","bottom","justifyContent","paddingTop","paddingBottom","paddingVertical","paddingHorizontal","marginHorizontal","borderRadius","marginVertical","flexDirection","alignItems","minHeight","flex","borderWidth","paddingLeft","marginRight","fontWeight","fontSize","opacity","marginLeft","marginTop","transform","scale","textAlign","lineHeight","marginBottom","shadowColor","shadowOffset","shadowOpacity","shadowRadius","zIndex","UpgradeViewSheet","sheet","useBottomSheet","hideBottomSheet","exports","_default"],"sourceRoot":"../../../src","sources":["iap/UpgradeView.tsx"],"mappings":"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","ignoreList":[]}
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useIsPremium = void 0;
var _react = require("react");
var _store = require("../store");
const useIsPremium = () => {
const {
globalState,
setGlobalState
} = (0, _store.useGlobalState)();
const setIsPremium = (0, _react.useCallback)(isPremium => {
setGlobalState({
isPremium
});
}, [setGlobalState]);
return {
isPremium: globalState.isPremium,
setIsPremium
};
};
exports.useIsPremium = useIsPremium;
//# sourceMappingURL=useIsPremium.js.map
{"version":3,"names":["_react","require","_store","useIsPremium","globalState","setGlobalState","useGlobalState","setIsPremium","useCallback","isPremium","exports"],"sourceRoot":"../../../src","sources":["iap/useIsPremium.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAEO,MAAME,YAAY,GAAGA,CAAA,KAAM;EAChC,MAAM;IAAEC,WAAW;IAAEC;EAAe,CAAC,GAAG,IAAAC,qBAAc,EAEnD,CAAC;EAEJ,MAAMC,YAAY,GAAG,IAAAC,kBAAW,EAC7BC,SAAkB,IAAK;IACtBJ,cAAc,CAAC;MAAEI;IAAU,CAAC,CAAC;EAC/B,CAAC,EACD,CAACJ,cAAc,CACjB,CAAC;EAED,OAAO;IAAEI,SAAS,EAAEL,WAAW,CAACK,SAAS;IAAEF;EAAa,CAAC;AAC3D,CAAC;AAACG,OAAA,CAAAP,YAAA,GAAAA,YAAA","ignoreList":[]}
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.usePremiumGuard = void 0;
var _react = require("react");
var _reactNative = require("react-native");
var _reactNativeRnx = require("react-native-rnx");
var _useUpgrade = require("./useUpgrade");
var _useIsPremium = require("./useIsPremium");
const usePremiumGuard = () => {
const {
isPremium
} = (0, _useIsPremium.useIsPremium)();
const upgrade = (0, _useUpgrade.useUpgrade)();
const {
localize
} = (0, _reactNativeRnx.useLocalization)();
const continueIfPremium = (0, _react.useCallback)(() => {
return new Promise((resolve, reject) => {
if (isPremium) {
return resolve();
}
_reactNative.Alert.alert(localize('iap.guardTitle'), localize('iap.guardMessage'), [{
text: localize('global.learnmore'),
style: 'default',
onPress: () => {
upgrade();
return reject();
}
}, {
text: localize('global.cancel'),
style: 'cancel',
onPress: () => {
return reject();
}
}]);
});
}, [isPremium, localize, upgrade]);
return {
continueIfPremium
};
};
exports.usePremiumGuard = usePremiumGuard;
//# sourceMappingURL=usePremiumGuard.js.map
{"version":3,"names":["_react","require","_reactNative","_reactNativeRnx","_useUpgrade","_useIsPremium","usePremiumGuard","isPremium","useIsPremium","upgrade","useUpgrade","localize","useLocalization","continueIfPremium","useCallback","Promise","resolve","reject","Alert","alert","text","style","onPress","exports"],"sourceRoot":"../../../src","sources":["iap/usePremiumGuard.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA;AACA,IAAAI,aAAA,GAAAJ,OAAA;AAEO,MAAMK,eAAe,GAAGA,CAAA,KAAM;EACnC,MAAM;IAAEC;EAAU,CAAC,GAAG,IAAAC,0BAAY,EAAC,CAAC;EACpC,MAAMC,OAAO,GAAG,IAAAC,sBAAU,EAAC,CAAC;EAC5B,MAAM;IAAEC;EAAS,CAAC,GAAG,IAAAC,+BAAe,EAAC,CAAC;EAEtC,MAAMC,iBAAiB,GAAG,IAAAC,kBAAW,EAAC,MAAM;IAC1C,OAAO,IAAIC,OAAO,CAAO,CAACC,OAAO,EAAEC,MAAM,KAAK;MAC5C,IAAIV,SAAS,EAAE;QACb,OAAOS,OAAO,CAAC,CAAC;MAClB;MACAE,kBAAK,CAACC,KAAK,CAACR,QAAQ,CAAC,gBAAgB,CAAC,EAAEA,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CACpE;QACES,IAAI,EAAET,QAAQ,CAAC,kBAAkB,CAAC;QAClCU,KAAK,EAAE,SAAS;QAChBC,OAAO,EAAEA,CAAA,KAAM;UACbb,OAAO,CAAC,CAAC;UACT,OAAOQ,MAAM,CAAC,CAAC;QACjB;MACF,CAAC,EACD;QACEG,IAAI,EAAET,QAAQ,CAAC,eAAe,CAAC;QAC/BU,KAAK,EAAE,QAAQ;QACfC,OAAO,EAAEA,CAAA,KAAM;UACb,OAAOL,MAAM,CAAC,CAAC;QACjB;MACF,CAAC,CACF,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,EAAE,CAACV,SAAS,EAAEI,QAAQ,EAAEF,OAAO,CAAC,CAAC;EAElC,OAAO;IAAEI;EAAkB,CAAC;AAC9B,CAAC;AAACU,OAAA,CAAAjB,eAAA,GAAAA,eAAA","ignoreList":[]}
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useUpgrade = void 0;
var _react = _interopRequireWildcard(require("react"));
var _reactNative = require("react-native");
var _reactNativeRnx = require("react-native-rnx");
var _UpgradeView = require("./UpgradeView");
var _jsxRuntime = require("react/jsx-runtime");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
const useUpgrade = () => {
const sheet = (0, _reactNativeRnx.useBottomSheet)();
const upgrade = (0, _react.useCallback)(() => {
const height = _reactNative.Dimensions.get('window').height - 50;
sheet.show({
snapPoints: [height],
hideHandle: true,
element: /*#__PURE__*/(0, _jsxRuntime.jsx)(_UpgradeView.UpgradeViewSheet, {})
});
}, [sheet]);
return upgrade;
};
exports.useUpgrade = useUpgrade;
//# sourceMappingURL=useUpgrade.js.map
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeRnx","_UpgradeView","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","useUpgrade","sheet","useBottomSheet","upgrade","useCallback","height","Dimensions","show","snapPoints","hideHandle","element","jsx","UpgradeViewSheet","exports"],"sourceRoot":"../../../src","sources":["iap/useUpgrade.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAF,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AAAiD,IAAAI,WAAA,GAAAJ,OAAA;AAAA,SAAAK,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAP,wBAAAO,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAE1C,MAAMW,UAAU,GAAGA,CAAA,KAAM;EAC9B,MAAMC,KAAK,GAAG,IAAAC,8BAAc,EAAC,CAAC;EAE9B,MAAMC,OAAO,GAAG,IAAAC,kBAAW,EAAC,MAAM;IAChC,MAAMC,MAAM,GAAGC,uBAAU,CAAClB,GAAG,CAAC,QAAQ,CAAC,CAACiB,MAAM,GAAG,EAAE;IACnDJ,KAAK,CAACM,IAAI,CAAC;MACTC,UAAU,EAAE,CAACH,MAAM,CAAC;MACpBI,UAAU,EAAE,IAAI;MAChBC,OAAO,eAAE,IAAA/B,WAAA,CAAAgC,GAAA,EAACjC,YAAA,CAAAkC,gBAAgB,IAAE;IAC9B,CAAC,CAAC;EACJ,CAAC,EAAE,CAACX,KAAK,CAAC,CAAC;EAEX,OAAOE,OAAO;AAChB,CAAC;AAACU,OAAA,CAAAb,UAAA,GAAAA,UAAA","ignoreList":[]}
"use strict";
import { Platform } from 'react-native';
import { initConnection, endConnection, getAvailablePurchases, requestSubscription, getSubscriptions, flushFailedPurchasesCachedAsPendingAndroid, purchaseErrorListener, purchaseUpdatedListener, clearTransactionIOS, finishTransaction, SubscriptionPlatform } from 'react-native-iap';
let PREMIUM_PRODUCT_LIST = [];
let purchaseUpdatedSubscription;
let purchaseErrorSubscription;
let onPurchaseSuccess;
let onPurchaseError;
export const initIAP = premiumSubscriptionIds => {
PREMIUM_PRODUCT_LIST = premiumSubscriptionIds;
try {
console.log('[rnx] initIAP initConnection');
// Init connection to store
initConnection().then(async () => {
// Clear pending transactions depending on devices
if (Platform.OS === 'android') {
// we make sure that "ghost" pending payment are removed
// (ghost = failed pending payment that are still marked as pending in Google's native Vending module cache)
console.log('[rnx] initIAP flushFailedPurchasesCachedAsPendingAndroid');
await flushFailedPurchasesCachedAsPendingAndroid().catch(e => {
console.log('[rnx] initIAP flushFailedPurchasesCachedAsPendingAndroid error', e);
// exception can happen here if:
// - there are pending purchases that are still pending (we can't consume a pending purchase)
// in any case, you might not want to do anything special with the error
});
} else if (Platform.OS === 'ios') {
console.log('[rnx] initIAP clearTransactionIOS');
await clearTransactionIOS();
}
// Start purchase listeners
console.log('[rnx] initIAP listen purchaseUpdatedListener');
// Case purchase error
purchaseErrorSubscription = purchaseErrorListener(error => {
console.log('[rnx] IAP purchaseErrorListener triggered error', error);
onPurchaseError && onPurchaseError();
});
// Case purchase success
purchaseUpdatedSubscription = purchaseUpdatedListener(async purchase => {
console.log('[rnx] IAP purchaseUpdatedListener triggered purchase', purchase);
await finishTransaction({
purchase,
isConsumable: false
});
if (PREMIUM_PRODUCT_LIST.map(p => p.id.toLocaleLowerCase()).includes(purchase.productId.toLocaleLowerCase())) {
onPurchaseSuccess && onPurchaseSuccess(purchase.productId);
} else {
console.log('[rnx] IAP purchaseUpdatedListener error, purchase product id does not match our list of products', purchase.productId);
}
});
});
} catch (e) {
console.error('[rnx] initIAP error', e);
}
};
export const closeIAP = () => {
console.log('[rnx] closeIAP endConnection');
if (purchaseUpdatedSubscription) {
purchaseUpdatedSubscription.remove();
purchaseUpdatedSubscription = undefined;
}
if (purchaseErrorSubscription) {
purchaseErrorSubscription.remove();
purchaseErrorSubscription = undefined;
}
endConnection();
};
const checkInitGuard = () => {
if (!PREMIUM_PRODUCT_LIST.length) {
throw '[rnx] You need to call initIAP first';
}
};
export const hasPurchasedPremium = async () => {
checkInitGuard();
try {
console.log('[rnx] hasPurchasedPremium getAvailablePurchases');
const purchases = await getAvailablePurchases();
console.log('[rnx] hasPurchasedPremium purchases.length', purchases.length, 'ids', purchases.map(p => p.productId));
return !!purchases.find(p => PREMIUM_PRODUCT_LIST.filter(p2 => p.productId.toLocaleLowerCase() === p2.id.toLocaleLowerCase()).length);
} catch (e) {
console.log('[rnx] restore error', e);
return Promise.reject();
}
};
export const requestPurchase = async subscription => {
checkInitGuard();
try {
console.log('[rnx] requestPurchase');
await requestSubscription({
sku: subscription.id,
andDangerouslyFinishTransactionAutomaticallyIOS: false,
// OfferToken will be only filled for android
...(subscription.offerToken && {
subscriptionOffers: [{
sku: subscription.id,
offerToken: subscription.offerToken
}]
})
});
console.log('[rnx] requestPurchase done');
return new Promise(resolve => {
onPurchaseSuccess = sku => {
console.log('[rnx] requestPurchase onPurchaseSuccess triggered for product', sku);
if (PREMIUM_PRODUCT_LIST.map(p => p.id.toLocaleLowerCase()).includes(sku.toLocaleLowerCase())) {
console.log('[rnx] requestPurchase onPurchaseSuccess productId found. Purchase validated');
return resolve(true);
} else {
console.log('[rnx] requestPurchase onPurchaseSuccess productId not matching');
return resolve(false);
}
};
onPurchaseError = () => {
console.log('[rnx] requestPurchase onPurchaseError triggered');
return resolve(false);
};
});
} catch (e) {
console.log('[rnx] requestPurchase error', e);
return Promise.reject();
}
};
export const getIapSubscriptions = async () => {
checkInitGuard();
console.log('[rnx] getIapSubscriptions');
const products = await getSubscriptions({
skus: PREMIUM_PRODUCT_LIST.map(o => o.id)
});
console.log('[rnx] getIapSubscriptions products.length', products.length);
if (products && products.length) {
return products.map(p => {
const base = PREMIUM_PRODUCT_LIST.find(p2 => p2.id === p.productId);
// Convert android sub
if (p.platform === SubscriptionPlatform.android) {
const platformProduct = p;
const prices = platformProduct.subscriptionOfferDetails[0].pricingPhases.pricingPhaseList.find(_p => _p.formattedPrice.toLocaleLowerCase() !== 'free') || platformProduct.subscriptionOfferDetails[0].pricingPhases.pricingPhaseList[platformProduct.subscriptionOfferDetails[0].pricingPhases.pricingPhaseList.length - 1];
return {
id: platformProduct.productId,
price: parseFloat(prices.priceAmountMicros) / 1000000,
localizedPrice: prices.formattedPrice,
durationMonth: base?.durationMonth || 0,
freeTrialDaysDuration: base?.freeTrialDaysDuration,
offerToken: platformProduct.subscriptionOfferDetails[0].offerToken
};
}
// Convert ios sub
const platformProduct = p;
return {
id: platformProduct.productId,
price: parseFloat(platformProduct.price),
localizedPrice: platformProduct.localizedPrice,
durationMonth: base?.durationMonth || 0,
freeTrialDaysDuration: base?.freeTrialDaysDuration
};
});
}
return [];
};
//# sourceMappingURL=IAPService.js.map
{"version":3,"names":["Platform","initConnection","endConnection","getAvailablePurchases","requestSubscription","getSubscriptions","flushFailedPurchasesCachedAsPendingAndroid","purchaseErrorListener","purchaseUpdatedListener","clearTransactionIOS","finishTransaction","SubscriptionPlatform","PREMIUM_PRODUCT_LIST","purchaseUpdatedSubscription","purchaseErrorSubscription","onPurchaseSuccess","onPurchaseError","initIAP","premiumSubscriptionIds","console","log","then","OS","catch","e","error","purchase","isConsumable","map","p","id","toLocaleLowerCase","includes","productId","closeIAP","remove","undefined","checkInitGuard","length","hasPurchasedPremium","purchases","find","filter","p2","Promise","reject","requestPurchase","subscription","sku","andDangerouslyFinishTransactionAutomaticallyIOS","offerToken","subscriptionOffers","resolve","getIapSubscriptions","products","skus","o","base","platform","android","platformProduct","prices","subscriptionOfferDetails","pricingPhases","pricingPhaseList","_p","formattedPrice","price","parseFloat","priceAmountMicros","localizedPrice","durationMonth","freeTrialDaysDuration"],"sourceRoot":"../../../src","sources":["iap/IAPService.ts"],"mappings":"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","ignoreList":[]}
"use strict";
export * from './useIsPremium';
export * from './IAPService';
export * from './UpgradeView';
export * from './useUpgrade';
export * from './usePremiumGuard';
//# sourceMappingURL=index.js.map
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["iap/index.ts"],"mappings":";;AAAA,cAAc,gBAAgB;AAC9B,cAAc,cAAc;AAC5B,cAAc,eAAe;AAC7B,cAAc,cAAc;AAC5B,cAAc,mBAAmB","ignoreList":[]}
"use strict";
import React, { useCallback, useEffect, useState } from 'react';
import { Dimensions, Image, Linking, StyleSheet, useColorScheme, View, Alert, ActivityIndicator, TouchableOpacity } from 'react-native';
import { useLocalization, Text, useTheme, Link, getIapSubscriptions, hasPurchasedPremium, useIsPremium, requestPurchase, useBottomSheet } from 'react-native-rnx';
import Icon from 'react-native-vector-icons/FontAwesome5';
import LinearGradient from 'react-native-linear-gradient';
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
const getCurrency = str => {
return str.replace(/[\d,. ]+/, '');
};
const Component = ({
screenHeight,
onCancel,
onContinue
}) => {
const {
localize
} = useLocalization();
const theme = useTheme();
const [iapList, setIapList] = useState();
const [selectedIap, setSelectedIap] = useState();
const [isLoading, setIsLoading] = useState(true);
const [isLoadingRestore, setIsLoadingRestore] = useState(false);
const [isLoadingPurchase, setIsLoadingPurchase] = useState(false);
const {
setIsPremium
} = useIsPremium();
useEffect(() => {
getIapSubscriptions().then(list => {
const usableList = list.filter(l => l.durationMonth === 1 || l.durationMonth === 12);
setIapList(usableList.sort((a, b) => a.price - b.price));
setSelectedIap(usableList.find(p => !!p.freeTrialDaysDuration) || usableList[0]);
setIsLoading(false);
});
}, [setIapList, setIsLoading]);
const _close = useCallback(() => {
onCancel();
}, [onCancel]);
const _success = useCallback(() => {
Alert.alert(localize('iap.successtitle'), localize('iap.successmsg'), [{
text: localize('iap.continue'),
onPress: () => {
if (onContinue) {
onContinue();
} else {
console.log('[rnx] UpgradeView close from _success');
_close();
}
}
}]);
}, [localize, onContinue, _close]);
const _restore = useCallback(() => {
console.log('restore');
setIsLoadingRestore(true);
hasPurchasedPremium().then(hasPurchase => {
setIsPremium(hasPurchase);
setIsLoadingRestore(false);
if (hasPurchase) {
_success();
} else {
Alert.alert(localize('iap.restoreerrortitle'), localize('iap.restoreerrormsg'));
}
});
}, [setIsPremium, localize, _success]);
const _subscribe = useCallback(() => {
if (selectedIap) {
setIsLoadingPurchase(true);
hasPurchasedPremium().then(hasPurchase => {
if (hasPurchase) {
setIsPremium(true);
setIsLoadingPurchase(false);
_success();
} else {
requestPurchase(selectedIap).then(_hasPurchase => {
setIsPremium(_hasPurchase);
setIsLoadingPurchase(false);
if (_hasPurchase) {
_success();
} else {
Alert.alert(localize('iap.purchaseerrortitle'), localize('iap.purchaseerrormsg'));
}
}, () => {
// Error/canceled
setIsLoadingPurchase(false);
});
}
});
}
}, [setIsLoadingPurchase, selectedIap, localize, setIsPremium, _success]);
const _openTerms = useCallback(() => {
Linking.openURL('https://berthx.io/terms/');
}, []);
const _openPrivacy = useCallback(() => {
Linking.openURL('https://berthx.io/policy/');
}, []);
const _skip = useCallback(() => {
console.log('[rnx] UpgradeView close from _skip');
_close();
}, [_close]);
const _tapClose = useCallback(() => {
console.log('[rnx] UpgradeView close from _tapClose');
_close();
}, [_close]);
console.log('[rnx] UpgradeView render');
return /*#__PURE__*/_jsxs(View, {
style: [styles.root, {
height: screenHeight
}],
children: [/*#__PURE__*/_jsx(Image, {
source: require('@assets/images/iap/bg.jpg'),
style: [styles.headerImg, {
backgroundColor: theme.borderColor
}],
resizeMode: "cover"
}), /*#__PURE__*/_jsx(Image, {
source: require('@assets/images/iap/bg-hd.jpg'),
style: [styles.headerImg, {
backgroundColor: theme.borderColor
}],
resizeMode: "cover"
}), /*#__PURE__*/_jsxs(View, {
style: styles.content,
children: [/*#__PURE__*/_jsx(LinearGradient, {
colors: ['rgba(0, 0, 0, 0.6)', 'transparent'],
style: styles.featuresBackdropTop
}), /*#__PURE__*/_jsxs(View, {
style: styles.topnav,
children: [/*#__PURE__*/_jsx(View, {
style: styles.topnavLeft,
children: /*#__PURE__*/_jsx(TouchableOpacity, {
style: [styles.topnavBtn],
onPress: _tapClose,
children: /*#__PURE__*/_jsx(Icon, {
name: "times",
color: "white",
size: 18
})
})
}), /*#__PURE__*/_jsx(Text, {
style: styles.topnavTitle,
children: localize('iap.title')
}), /*#__PURE__*/_jsx(View, {
style: styles.topnavRight,
children: /*#__PURE__*/_jsx(TouchableOpacity, {
style: [styles.topnavBtn],
onPress: _restore,
disabled: isLoading || isLoadingRestore || isLoadingPurchase,
children: isLoadingRestore ? /*#__PURE__*/_jsx(ActivityIndicator, {
color: "white"
}) : /*#__PURE__*/_jsx(Text, {
style: styles.topnavBtnTxt,
children: localize('iap.restore')
})
})
})]
}), /*#__PURE__*/_jsxs(View, {
style: styles.featuresContainer,
children: [/*#__PURE__*/_jsx(LinearGradient, {
colors: ['transparent', 'rgba(0, 0, 0, 0.9)'],
style: styles.featuresBackdrop
}), /*#__PURE__*/_jsx(Text, {
style: styles.featuresTitle,
children: localize('iap.featurestitle')
}), /*#__PURE__*/_jsx(Text, {
style: styles.featuresTxt,
children: localize('iap.features')
})]
}), /*#__PURE__*/_jsxs(View, {
style: [styles.bottomContent, {
backgroundColor: theme.bgColor
}],
children: [iapList?.map(iap => /*#__PURE__*/_jsx(SubscribeRow, {
isActive: iap.id === selectedIap?.id,
iap: iap,
onPress: setSelectedIap
}, iap.id)), isLoading && /*#__PURE__*/_jsx(View, {
style: styles.loadingRows,
children: /*#__PURE__*/_jsx(ActivityIndicator, {
size: "large"
})
}), /*#__PURE__*/_jsxs(TouchableOpacity, {
onPress: _subscribe,
activeOpacity: 0.6,
disabled: isLoading || isLoadingRestore || isLoadingPurchase,
style: [styles.btnMain, {
backgroundColor: theme.primaryColor
}],
children: [/*#__PURE__*/_jsxs(View, {
style: styles.btnMainTitleContainer,
children: [/*#__PURE__*/_jsx(Text, {
style: [styles.btnMainTitle, {
color: theme.txtColorOnPrimaryColor
}],
children: localize('iap.btnMain')
}), selectedIap?.freeTrialDaysDuration && /*#__PURE__*/_jsx(Text, {
style: [styles.btnMainSubtitle, {
color: theme.txtColorOnPrimaryColor
}],
children: localize('iap.autodeductAfter', {
x: selectedIap.freeTrialDaysDuration
})
})]
}), isLoadingPurchase ? /*#__PURE__*/_jsx(ActivityIndicator, {
style: styles.btnMainArrow,
color: theme.txtColorOnPrimaryColor
}) : /*#__PURE__*/_jsx(Icon, {
name: "chevron-right",
size: 20,
color: theme.txtColorOnPrimaryColor,
style: styles.btnMainArrow
})]
}), /*#__PURE__*/_jsx(Link, {
style: styles.skip,
title: localize('iap.skip'),
onPress: _skip
}), /*#__PURE__*/_jsx(Text, {
style: styles.disclaimer,
children: localize('iap.disclaimer')
}), /*#__PURE__*/_jsxs(View, {
style: styles.policies,
children: [/*#__PURE__*/_jsx(Link, {
title: localize('iap.terms'),
onPress: _openTerms
}), /*#__PURE__*/_jsx(Link, {
title: localize('iap.privacy'),
onPress: _openPrivacy
})]
})]
})]
})]
});
};
const SubscribeRow = props => {
const theme = useTheme();
const {
localize
} = useLocalization();
const {
iap
} = props;
const isDarkTheme = useColorScheme() === 'dark';
return /*#__PURE__*/_jsxs(TouchableOpacity, {
onPress: () => props.onPress(iap),
activeOpacity: 0.8,
style: [styles.row, props.isActive && (isDarkTheme ? styles.rowActiveDark : styles.rowActive)],
children: [/*#__PURE__*/_jsx(View, {
style: [styles.check, {
borderColor: theme.primaryColor
}, props.isActive && {
backgroundColor: theme.primaryColor
}],
children: props.isActive && /*#__PURE__*/_jsx(Icon, {
name: "check",
color: theme.txtColorOnPrimaryColor,
size: 14
})
}), /*#__PURE__*/_jsxs(View, {
style: styles.rowContent,
children: [/*#__PURE__*/_jsxs(View, {
style: styles.rowTitleContainer,
children: [/*#__PURE__*/_jsx(Text, {
style: styles.rowTitle,
children: localize('iap.rowTitle', {
price: iap.localizedPrice,
duration: iap.durationMonth === 12 ? localize('iap.rowTitleYear') : localize('iap.rowTitleMonth')
})
}), iap.durationMonth !== 1 && /*#__PURE__*/_jsx(Text, {
style: styles.rowPricePerMonth,
children: localize('iap.rowPricePerMonth', {
price: `${getCurrency(iap.localizedPrice)}${(iap.price / iap.durationMonth).toFixed(2)}`
})
})]
}), !!iap.freeTrialDaysDuration && /*#__PURE__*/_jsx(Text, {
style: [styles.rowFreeTrial, {
color: theme.primaryTxtColor
}],
children: localize('iap.freetrial', {
duration: iap.freeTrialDaysDuration
})
})]
}), !!iap.freeTrialDaysDuration && props.isActive && /*#__PURE__*/_jsx(Icon, {
name: "star",
solid: true,
color: "#efbb00",
size: 22
})]
});
};
const styles = StyleSheet.create({
root: {},
headerImg: {
height: Dimensions.get('window').height - 300,
width: Dimensions.get('window').width,
borderTopLeftRadius: 15,
borderTopRightRadius: 15,
position: 'absolute',
left: 0,
right: 0,
top: 0,
overflow: 'hidden'
},
content: {
position: 'absolute',
bottom: 0,
left: 0,
right: 0,
top: 0,
justifyContent: 'flex-end'
},
bottomContent: {
borderTopLeftRadius: 15,
borderTopRightRadius: 15,
paddingTop: 10,
paddingBottom: 20
},
row: {
paddingVertical: 10,
paddingHorizontal: 15,
marginHorizontal: 10,
borderRadius: 10,
marginVertical: 2,
flexDirection: 'row',
alignItems: 'center',
minHeight: 50
},
rowActive: {
backgroundColor: '#eee'
},
rowActiveDark: {
backgroundColor: '#222'
},
rowContent: {
flex: 1
},
rowTitleContainer: {
flexDirection: 'row'
},
check: {
borderWidth: 2,
borderRadius: 100,
height: 22,
width: 22,
justifyContent: 'center',
alignItems: 'center',
paddingLeft: 1,
marginRight: 10
},
rowTitle: {
fontWeight: '900',
fontSize: 14
},
rowPricePerMonth: {
fontWeight: '700',
fontSize: 13,
opacity: 0.7,
marginLeft: 5
},
rowFreeTrial: {
fontWeight: '900',
fontSize: 10
},
btnMain: {
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'center',
minHeight: 65,
marginHorizontal: 15,
borderRadius: 12,
marginTop: 15
},
btnMainTitleContainer: {
alignItems: 'center'
},
btnMainTitle: {
fontSize: 20,
fontWeight: '900'
},
btnMainSubtitle: {
fontSize: 10,
fontWeight: '600'
},
btnMainArrow: {
position: 'absolute',
right: 15
},
skip: {
marginTop: 10,
transform: [{
scale: 0.9
}]
},
disclaimer: {
paddingHorizontal: 20,
textAlign: 'center',
fontSize: 10,
lineHeight: 11,
marginTop: 0,
marginBottom: 0
},
policies: {
flexDirection: 'row',
justifyContent: 'center',
paddingHorizontal: 20,
transform: [{
scale: 0.8
}]
},
featuresBackdropTop: {
position: 'absolute',
left: 0,
right: 0,
top: -50,
height: 150
},
featuresBackdrop: {
position: 'absolute',
bottom: -30,
left: 0,
right: 0,
top: -50
},
featuresContainer: {
paddingHorizontal: 15,
paddingBottom: 15,
paddingTop: 0
},
featuresTitle: {
shadowColor: '#000',
shadowOffset: {
width: 0,
height: 0
},
shadowOpacity: 0.5,
shadowRadius: 5,
color: 'white',
fontWeight: '900',
fontSize: 16,
marginBottom: 8
},
featuresTxt: {
shadowColor: '#000',
shadowOffset: {
width: 0,
height: 0
},
shadowOpacity: 0.5,
shadowRadius: 5,
color: 'white',
fontWeight: '500',
fontSize: 14,
lineHeight: 20,
marginLeft: 5
},
topnav: {
flexDirection: 'row',
shadowColor: '#000',
shadowOffset: {
width: 0,
height: 0
},
shadowOpacity: 0.9,
shadowRadius: 9,
position: 'absolute',
top: 0,
right: 0,
left: 0,
zIndex: 999,
paddingVertical: 15,
alignItems: 'center'
},
topnavTitle: {
flex: 1,
textAlign: 'center',
color: 'white',
fontWeight: '900'
},
topnavBtn: {
paddingHorizontal: 10,
paddingVertical: 5
},
topnavBtnTxt: {
color: 'white',
fontWeight: '700'
},
topnavLeft: {
position: 'absolute',
left: 0,
zIndex: 9999
},
topnavRight: {
position: 'absolute',
right: 0,
zIndex: 9999
},
loadingRows: {
marginTop: 20,
marginBottom: 20
}
});
export const UpgradeViewSheet = () => {
const sheet = useBottomSheet();
console.log('[rnx] UpgradeViewSheet render');
return /*#__PURE__*/_jsx(Component, {
screenHeight: Dimensions.get('window').height - 50,
onCancel: () => sheet.hideBottomSheet()
});
};
export default Component;
//# sourceMappingURL=UpgradeView.js.map
{"version":3,"names":["React","useCallback","useEffect","useState","Dimensions","Image","Linking","StyleSheet","useColorScheme","View","Alert","ActivityIndicator","TouchableOpacity","useLocalization","Text","useTheme","Link","getIapSubscriptions","hasPurchasedPremium","useIsPremium","requestPurchase","useBottomSheet","Icon","LinearGradient","jsx","_jsx","jsxs","_jsxs","getCurrency","str","replace","Component","screenHeight","onCancel","onContinue","localize","theme","iapList","setIapList","selectedIap","setSelectedIap","isLoading","setIsLoading","isLoadingRestore","setIsLoadingRestore","isLoadingPurchase","setIsLoadingPurchase","setIsPremium","then","list","usableList","filter","l","durationMonth","sort","a","b","price","find","p","freeTrialDaysDuration","_close","_success","alert","text","onPress","console","log","_restore","hasPurchase","_subscribe","_hasPurchase","_openTerms","openURL","_openPrivacy","_skip","_tapClose","style","styles","root","height","children","source","require","headerImg","backgroundColor","borderColor","resizeMode","content","colors","featuresBackdropTop","topnav","topnavLeft","topnavBtn","name","color","size","topnavTitle","topnavRight","disabled","topnavBtnTxt","featuresContainer","featuresBackdrop","featuresTitle","featuresTxt","bottomContent","bgColor","map","iap","SubscribeRow","isActive","id","loadingRows","activeOpacity","btnMain","primaryColor","btnMainTitleContainer","btnMainTitle","txtColorOnPrimaryColor","btnMainSubtitle","x","btnMainArrow","skip","title","disclaimer","policies","props","isDarkTheme","row","rowActiveDark","rowActive","check","rowContent","rowTitleContainer","rowTitle","localizedPrice","duration","rowPricePerMonth","toFixed","rowFreeTrial","primaryTxtColor","solid","create","get","width","borderTopLeftRadius","borderTopRightRadius","position","left","right","top","overflow","bottom","justifyContent","paddingTop","paddingBottom","paddingVertical","paddingHorizontal","marginHorizontal","borderRadius","marginVertical","flexDirection","alignItems","minHeight","flex","borderWidth","paddingLeft","marginRight","fontWeight","fontSize","opacity","marginLeft","marginTop","transform","scale","textAlign","lineHeight","marginBottom","shadowColor","shadowOffset","shadowOpacity","shadowRadius","zIndex","UpgradeViewSheet","sheet","hideBottomSheet"],"sourceRoot":"../../../src","sources":["iap/UpgradeView.tsx"],"mappings":"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","ignoreList":[]}
"use strict";
import { useCallback } from 'react';
import { useGlobalState } from '../store';
export const useIsPremium = () => {
const {
globalState,
setGlobalState
} = useGlobalState();
const setIsPremium = useCallback(isPremium => {
setGlobalState({
isPremium
});
}, [setGlobalState]);
return {
isPremium: globalState.isPremium,
setIsPremium
};
};
//# sourceMappingURL=useIsPremium.js.map
{"version":3,"names":["useCallback","useGlobalState","useIsPremium","globalState","setGlobalState","setIsPremium","isPremium"],"sourceRoot":"../../../src","sources":["iap/useIsPremium.ts"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,OAAO;AACnC,SAASC,cAAc,QAAQ,UAAU;AAEzC,OAAO,MAAMC,YAAY,GAAGA,CAAA,KAAM;EAChC,MAAM;IAAEC,WAAW;IAAEC;EAAe,CAAC,GAAGH,cAAc,CAEnD,CAAC;EAEJ,MAAMI,YAAY,GAAGL,WAAW,CAC7BM,SAAkB,IAAK;IACtBF,cAAc,CAAC;MAAEE;IAAU,CAAC,CAAC;EAC/B,CAAC,EACD,CAACF,cAAc,CACjB,CAAC;EAED,OAAO;IAAEE,SAAS,EAAEH,WAAW,CAACG,SAAS;IAAED;EAAa,CAAC;AAC3D,CAAC","ignoreList":[]}
"use strict";
import 'react';
import { useCallback } from 'react';
import { Alert } from 'react-native';
import { useLocalization } from 'react-native-rnx';
import { useUpgrade } from './useUpgrade';
import { useIsPremium } from './useIsPremium';
export const usePremiumGuard = () => {
const {
isPremium
} = useIsPremium();
const upgrade = useUpgrade();
const {
localize
} = useLocalization();
const continueIfPremium = useCallback(() => {
return new Promise((resolve, reject) => {
if (isPremium) {
return resolve();
}
Alert.alert(localize('iap.guardTitle'), localize('iap.guardMessage'), [{
text: localize('global.learnmore'),
style: 'default',
onPress: () => {
upgrade();
return reject();
}
}, {
text: localize('global.cancel'),
style: 'cancel',
onPress: () => {
return reject();
}
}]);
});
}, [isPremium, localize, upgrade]);
return {
continueIfPremium
};
};
//# sourceMappingURL=usePremiumGuard.js.map
{"version":3,"names":["useCallback","Alert","useLocalization","useUpgrade","useIsPremium","usePremiumGuard","isPremium","upgrade","localize","continueIfPremium","Promise","resolve","reject","alert","text","style","onPress"],"sourceRoot":"../../../src","sources":["iap/usePremiumGuard.tsx"],"mappings":";;AAAA,OAAO,OAAO;AACd,SAASA,WAAW,QAAQ,OAAO;AACnC,SAASC,KAAK,QAAQ,cAAc;AACpC,SAASC,eAAe,QAAQ,kBAAkB;AAClD,SAASC,UAAU,QAAQ,cAAc;AACzC,SAASC,YAAY,QAAQ,gBAAgB;AAE7C,OAAO,MAAMC,eAAe,GAAGA,CAAA,KAAM;EACnC,MAAM;IAAEC;EAAU,CAAC,GAAGF,YAAY,CAAC,CAAC;EACpC,MAAMG,OAAO,GAAGJ,UAAU,CAAC,CAAC;EAC5B,MAAM;IAAEK;EAAS,CAAC,GAAGN,eAAe,CAAC,CAAC;EAEtC,MAAMO,iBAAiB,GAAGT,WAAW,CAAC,MAAM;IAC1C,OAAO,IAAIU,OAAO,CAAO,CAACC,OAAO,EAAEC,MAAM,KAAK;MAC5C,IAAIN,SAAS,EAAE;QACb,OAAOK,OAAO,CAAC,CAAC;MAClB;MACAV,KAAK,CAACY,KAAK,CAACL,QAAQ,CAAC,gBAAgB,CAAC,EAAEA,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CACpE;QACEM,IAAI,EAAEN,QAAQ,CAAC,kBAAkB,CAAC;QAClCO,KAAK,EAAE,SAAS;QAChBC,OAAO,EAAEA,CAAA,KAAM;UACbT,OAAO,CAAC,CAAC;UACT,OAAOK,MAAM,CAAC,CAAC;QACjB;MACF,CAAC,EACD;QACEE,IAAI,EAAEN,QAAQ,CAAC,eAAe,CAAC;QAC/BO,KAAK,EAAE,QAAQ;QACfC,OAAO,EAAEA,CAAA,KAAM;UACb,OAAOJ,MAAM,CAAC,CAAC;QACjB;MACF,CAAC,CACF,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,EAAE,CAACN,SAAS,EAAEE,QAAQ,EAAED,OAAO,CAAC,CAAC;EAElC,OAAO;IAAEE;EAAkB,CAAC;AAC9B,CAAC","ignoreList":[]}
"use strict";
import React from 'react';
import { useCallback } from 'react';
import { Dimensions } from 'react-native';
import { useBottomSheet } from 'react-native-rnx';
import { UpgradeViewSheet } from './UpgradeView';
import { jsx as _jsx } from "react/jsx-runtime";
export const useUpgrade = () => {
const sheet = useBottomSheet();
const upgrade = useCallback(() => {
const height = Dimensions.get('window').height - 50;
sheet.show({
snapPoints: [height],
hideHandle: true,
element: /*#__PURE__*/_jsx(UpgradeViewSheet, {})
});
}, [sheet]);
return upgrade;
};
//# sourceMappingURL=useUpgrade.js.map
{"version":3,"names":["React","useCallback","Dimensions","useBottomSheet","UpgradeViewSheet","jsx","_jsx","useUpgrade","sheet","upgrade","height","get","show","snapPoints","hideHandle","element"],"sourceRoot":"../../../src","sources":["iap/useUpgrade.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,WAAW,QAAQ,OAAO;AACnC,SAASC,UAAU,QAAQ,cAAc;AACzC,SAASC,cAAc,QAAQ,kBAAkB;AACjD,SAASC,gBAAgB,QAAQ,eAAe;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEjD,OAAO,MAAMC,UAAU,GAAGA,CAAA,KAAM;EAC9B,MAAMC,KAAK,GAAGL,cAAc,CAAC,CAAC;EAE9B,MAAMM,OAAO,GAAGR,WAAW,CAAC,MAAM;IAChC,MAAMS,MAAM,GAAGR,UAAU,CAACS,GAAG,CAAC,QAAQ,CAAC,CAACD,MAAM,GAAG,EAAE;IACnDF,KAAK,CAACI,IAAI,CAAC;MACTC,UAAU,EAAE,CAACH,MAAM,CAAC;MACpBI,UAAU,EAAE,IAAI;MAChBC,OAAO,eAAET,IAAA,CAACF,gBAAgB,IAAE;IAC9B,CAAC,CAAC;EACJ,CAAC,EAAE,CAACI,KAAK,CAAC,CAAC;EAEX,OAAOC,OAAO;AAChB,CAAC","ignoreList":[]}
export interface IapSubscriptionBase {
id: string;
durationMonth: number;
freeTrialDaysDuration?: number;
}
export interface IapSubscription extends IapSubscriptionBase {
price: number;
localizedPrice: string;
offerToken?: string;
}
export declare const initIAP: (premiumSubscriptionIds: IapSubscriptionBase[]) => void;
export declare const closeIAP: () => void;
export declare const hasPurchasedPremium: () => Promise<boolean>;
export declare const requestPurchase: (subscription: IapSubscription) => Promise<boolean>;
export declare const getIapSubscriptions: () => Promise<IapSubscription[]>;
//# sourceMappingURL=IAPService.d.ts.map
{"version":3,"file":"IAPService.d.ts","sourceRoot":"","sources":["../../../src/iap/IAPService.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,eAAgB,SAAQ,mBAAmB;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AASD,eAAO,MAAM,OAAO,2BAA4B,mBAAmB,EAAE,SA4DpE,CAAC;AAEF,eAAO,MAAM,QAAQ,YAWpB,CAAC;AAQF,eAAO,MAAM,mBAAmB,wBAqB/B,CAAC;AAEF,eAAO,MAAM,eAAe,iBACZ,eAAe,KAC5B,QAAQ,OAAO,CA8CjB,CAAC;AAEF,eAAO,MAAM,mBAAmB,QAAa,QAAQ,eAAe,EAAE,CA6CrE,CAAC"}
export * from './useIsPremium';
export * from './IAPService';
export * from './UpgradeView';
export * from './useUpgrade';
export * from './usePremiumGuard';
//# sourceMappingURL=index.d.ts.map
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/iap/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC"}
import React from 'react';
interface Props {
screenHeight: number;
onCancel: () => void;
onContinue?: () => void;
}
declare const Component: React.FC<Props>;
export declare const UpgradeViewSheet: () => JSX.Element;
export default Component;
//# sourceMappingURL=UpgradeView.d.ts.map
{"version":3,"file":"UpgradeView.d.ts","sourceRoot":"","sources":["../../../src/iap/UpgradeView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AA+BhE,UAAU,KAAK;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB;AAED,QAAA,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAiP9B,CAAC;AA8RF,eAAO,MAAM,gBAAgB,mBAS5B,CAAC;AAEF,eAAe,SAAS,CAAC"}
export declare const useIsPremium: () => {
isPremium: boolean;
setIsPremium: (isPremium: boolean) => void;
};
//# sourceMappingURL=useIsPremium.d.ts.map
{"version":3,"file":"useIsPremium.d.ts","sourceRoot":"","sources":["../../../src/iap/useIsPremium.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY;;8BAMT,OAAO;CAOtB,CAAC"}
import 'react';
export declare const usePremiumGuard: () => {
continueIfPremium: () => Promise<void>;
};
//# sourceMappingURL=usePremiumGuard.d.ts.map
{"version":3,"file":"usePremiumGuard.d.ts","sourceRoot":"","sources":["../../../src/iap/usePremiumGuard.tsx"],"names":[],"mappings":"AAAA,OAAO,OAAO,CAAC;AAOf,eAAO,MAAM,eAAe;;CA+B3B,CAAC"}
export declare const useUpgrade: () => () => void;
//# sourceMappingURL=useUpgrade.d.ts.map
{"version":3,"file":"useUpgrade.d.ts","sourceRoot":"","sources":["../../../src/iap/useUpgrade.tsx"],"names":[],"mappings":"AAMA,eAAO,MAAM,UAAU,kBAatB,CAAC"}
import { EmitterSubscription, Platform } from 'react-native';
import {
initConnection,
endConnection,
getAvailablePurchases,
requestSubscription,
getSubscriptions,
flushFailedPurchasesCachedAsPendingAndroid,
purchaseErrorListener,
purchaseUpdatedListener,
PurchaseError,
clearTransactionIOS,
finishTransaction,
SubscriptionIOS,
SubscriptionAndroid,
SubscriptionPlatform,
} from 'react-native-iap';
export interface IapSubscriptionBase {
id: string;
durationMonth: number;
freeTrialDaysDuration?: number;
}
export interface IapSubscription extends IapSubscriptionBase {
price: number;
localizedPrice: string;
offerToken?: string;
}
let PREMIUM_PRODUCT_LIST: IapSubscriptionBase[] = [];
let purchaseUpdatedSubscription: EmitterSubscription | undefined;
let purchaseErrorSubscription: EmitterSubscription | undefined;
let onPurchaseSuccess: ((subscriptionId: string) => void) | undefined;
let onPurchaseError: (() => void) | undefined;
export const initIAP = (premiumSubscriptionIds: IapSubscriptionBase[]) => {
PREMIUM_PRODUCT_LIST = premiumSubscriptionIds;
try {
console.log('[rnx] initIAP initConnection');
// Init connection to store
initConnection().then(async () => {
// Clear pending transactions depending on devices
if (Platform.OS === 'android') {
// we make sure that "ghost" pending payment are removed
// (ghost = failed pending payment that are still marked as pending in Google's native Vending module cache)
console.log('[rnx] initIAP flushFailedPurchasesCachedAsPendingAndroid');
await flushFailedPurchasesCachedAsPendingAndroid().catch((e) => {
console.log(
'[rnx] initIAP flushFailedPurchasesCachedAsPendingAndroid error',
e
);
// exception can happen here if:
// - there are pending purchases that are still pending (we can't consume a pending purchase)
// in any case, you might not want to do anything special with the error
});
} else if (Platform.OS === 'ios') {
console.log('[rnx] initIAP clearTransactionIOS');
await clearTransactionIOS();
}
// Start purchase listeners
console.log('[rnx] initIAP listen purchaseUpdatedListener');
// Case purchase error
purchaseErrorSubscription = purchaseErrorListener(
(error: PurchaseError) => {
console.log('[rnx] IAP purchaseErrorListener triggered error', error);
onPurchaseError && onPurchaseError();
}
);
// Case purchase success
purchaseUpdatedSubscription = purchaseUpdatedListener(
async (purchase) => {
console.log(
'[rnx] IAP purchaseUpdatedListener triggered purchase',
purchase
);
await finishTransaction({ purchase, isConsumable: false });
if (
PREMIUM_PRODUCT_LIST.map((p) => p.id.toLocaleLowerCase()).includes(
purchase.productId.toLocaleLowerCase()
)
) {
onPurchaseSuccess && onPurchaseSuccess(purchase.productId);
} else {
console.log(
'[rnx] IAP purchaseUpdatedListener error, purchase product id does not match our list of products',
purchase.productId
);
}
}
);
});
} catch (e) {
console.error('[rnx] initIAP error', e);
}
};
export const closeIAP = () => {
console.log('[rnx] closeIAP endConnection');
if (purchaseUpdatedSubscription) {
purchaseUpdatedSubscription.remove();
purchaseUpdatedSubscription = undefined;
}
if (purchaseErrorSubscription) {
purchaseErrorSubscription.remove();
purchaseErrorSubscription = undefined;
}
endConnection();
};
const checkInitGuard = () => {
if (!PREMIUM_PRODUCT_LIST.length) {
throw '[rnx] You need to call initIAP first';
}
};
export const hasPurchasedPremium = async () => {
checkInitGuard();
try {
console.log('[rnx] hasPurchasedPremium getAvailablePurchases');
const purchases = await getAvailablePurchases();
console.log(
'[rnx] hasPurchasedPremium purchases.length',
purchases.length,
'ids',
purchases.map((p) => p.productId)
);
return !!purchases.find(
(p) =>
PREMIUM_PRODUCT_LIST.filter(
(p2) => p.productId.toLocaleLowerCase() === p2.id.toLocaleLowerCase()
).length
);
} catch (e) {
console.log('[rnx] restore error', e);
return Promise.reject();
}
};
export const requestPurchase = async (
subscription: IapSubscription
): Promise<boolean> => {
checkInitGuard();
try {
console.log('[rnx] requestPurchase');
await requestSubscription({
sku: subscription.id,
andDangerouslyFinishTransactionAutomaticallyIOS: false,
// OfferToken will be only filled for android
...(subscription.offerToken && {
subscriptionOffers: [
{ sku: subscription.id, offerToken: subscription.offerToken },
],
}),
});
console.log('[rnx] requestPurchase done');
return new Promise<boolean>((resolve) => {
onPurchaseSuccess = (sku) => {
console.log(
'[rnx] requestPurchase onPurchaseSuccess triggered for product',
sku
);
if (
PREMIUM_PRODUCT_LIST.map((p) => p.id.toLocaleLowerCase()).includes(
sku.toLocaleLowerCase()
)
) {
console.log(
'[rnx] requestPurchase onPurchaseSuccess productId found. Purchase validated'
);
return resolve(true);
} else {
console.log(
'[rnx] requestPurchase onPurchaseSuccess productId not matching'
);
return resolve(false);
}
};
onPurchaseError = () => {
console.log('[rnx] requestPurchase onPurchaseError triggered');
return resolve(false);
};
});
} catch (e) {
console.log('[rnx] requestPurchase error', e);
return Promise.reject();
}
};
export const getIapSubscriptions = async (): Promise<IapSubscription[]> => {
checkInitGuard();
console.log('[rnx] getIapSubscriptions');
const products = await getSubscriptions({
skus: PREMIUM_PRODUCT_LIST.map((o) => o.id),
});
console.log('[rnx] getIapSubscriptions products.length', products.length);
if (products && products.length) {
return products.map((p) => {
const base = PREMIUM_PRODUCT_LIST.find((p2) => p2.id === p.productId);
// Convert android sub
if (p.platform === SubscriptionPlatform.android) {
const platformProduct = p as SubscriptionAndroid;
const prices =
platformProduct.subscriptionOfferDetails[0].pricingPhases.pricingPhaseList.find(
(_p) => _p.formattedPrice.toLocaleLowerCase() !== 'free'
) ||
platformProduct.subscriptionOfferDetails[0].pricingPhases
.pricingPhaseList[
platformProduct.subscriptionOfferDetails[0].pricingPhases
.pricingPhaseList.length - 1
];
return {
id: platformProduct.productId,
price: parseFloat(prices.priceAmountMicros) / 1000000,
localizedPrice: prices.formattedPrice,
durationMonth: base?.durationMonth || 0,
freeTrialDaysDuration: base?.freeTrialDaysDuration,
offerToken: platformProduct.subscriptionOfferDetails[0].offerToken,
};
}
// Convert ios sub
const platformProduct = p as SubscriptionIOS;
return {
id: platformProduct.productId,
price: parseFloat(platformProduct.price),
localizedPrice: platformProduct.localizedPrice,
durationMonth: base?.durationMonth || 0,
freeTrialDaysDuration: base?.freeTrialDaysDuration,
};
});
}
return [];
};
export * from './useIsPremium';
export * from './IAPService';
export * from './UpgradeView';
export * from './useUpgrade';
export * from './usePremiumGuard';
import React, { useCallback, useEffect, useState } from 'react';
import {
Dimensions,
Image,
Linking,
StyleSheet,
useColorScheme,
View,
Alert,
ActivityIndicator,
TouchableOpacity,
} from 'react-native';
import {
useLocalization,
Text,
useTheme,
Link,
IapSubscription,
getIapSubscriptions,
hasPurchasedPremium,
useIsPremium,
requestPurchase,
useBottomSheet,
} from 'react-native-rnx';
import Icon from 'react-native-vector-icons/FontAwesome5';
import LinearGradient from 'react-native-linear-gradient';
const getCurrency = (str: string) => {
return str.replace(/[\d,. ]+/, '');
};
interface Props {
screenHeight: number;
onCancel: () => void;
onContinue?: () => void;
}
const Component: React.FC<Props> = ({ screenHeight, onCancel, onContinue }) => {
const { localize } = useLocalization();
const theme = useTheme();
const [iapList, setIapList] = useState<IapSubscription[] | null>();
const [selectedIap, setSelectedIap] = useState<IapSubscription | null>();
const [isLoading, setIsLoading] = useState(true);
const [isLoadingRestore, setIsLoadingRestore] = useState(false);
const [isLoadingPurchase, setIsLoadingPurchase] = useState(false);
const { setIsPremium } = useIsPremium();
useEffect(() => {
getIapSubscriptions().then((list) => {
const usableList = list.filter(
(l) => l.durationMonth === 1 || l.durationMonth === 12
);
setIapList(usableList.sort((a, b) => a.price - b.price));
setSelectedIap(
usableList.find((p) => !!p.freeTrialDaysDuration) || usableList[0]
);
setIsLoading(false);
});
}, [setIapList, setIsLoading]);
const _close = useCallback(() => {
onCancel();
}, [onCancel]);
const _success = useCallback(() => {
Alert.alert(localize('iap.successtitle'), localize('iap.successmsg'), [
{
text: localize('iap.continue'),
onPress: () => {
if (onContinue) {
onContinue();
} else {
console.log('[rnx] UpgradeView close from _success');
_close();
}
},
},
]);
}, [localize, onContinue, _close]);
const _restore = useCallback(() => {
console.log('restore');
setIsLoadingRestore(true);
hasPurchasedPremium().then((hasPurchase) => {
setIsPremium(hasPurchase);
setIsLoadingRestore(false);
if (hasPurchase) {
_success();
} else {
Alert.alert(
localize('iap.restoreerrortitle'),
localize('iap.restoreerrormsg')
);
}
});
}, [setIsPremium, localize, _success]);
const _subscribe = useCallback(() => {
if (selectedIap) {
setIsLoadingPurchase(true);
hasPurchasedPremium().then((hasPurchase) => {
if (hasPurchase) {
setIsPremium(true);
setIsLoadingPurchase(false);
_success();
} else {
requestPurchase(selectedIap).then(
(_hasPurchase) => {
setIsPremium(_hasPurchase);
setIsLoadingPurchase(false);
if (_hasPurchase) {
_success();
} else {
Alert.alert(
localize('iap.purchaseerrortitle'),
localize('iap.purchaseerrormsg')
);
}
},
() => {
// Error/canceled
setIsLoadingPurchase(false);
}
);
}
});
}
}, [setIsLoadingPurchase, selectedIap, localize, setIsPremium, _success]);
const _openTerms = useCallback(() => {
Linking.openURL('https://berthx.io/terms/');
}, []);
const _openPrivacy = useCallback(() => {
Linking.openURL('https://berthx.io/policy/');
}, []);
const _skip = useCallback(() => {
console.log('[rnx] UpgradeView close from _skip');
_close();
}, [_close]);
const _tapClose = useCallback(() => {
console.log('[rnx] UpgradeView close from _tapClose');
_close();
}, [_close]);
console.log('[rnx] UpgradeView render');
return (
<View style={[styles.root, { height: screenHeight }]}>
<Image
source={require('@assets/images/iap/bg.jpg')}
style={[styles.headerImg, { backgroundColor: theme.borderColor }]}
resizeMode="cover"
/>
<Image
source={require('@assets/images/iap/bg-hd.jpg')}
style={[styles.headerImg, { backgroundColor: theme.borderColor }]}
resizeMode="cover"
/>
<View style={styles.content}>
<LinearGradient
colors={['rgba(0, 0, 0, 0.6)', 'transparent']}
style={styles.featuresBackdropTop}
/>
<View style={styles.topnav}>
<View style={styles.topnavLeft}>
<TouchableOpacity style={[styles.topnavBtn]} onPress={_tapClose}>
<Icon name="times" color="white" size={18} />
</TouchableOpacity>
</View>
<Text style={styles.topnavTitle}>{localize('iap.title')}</Text>
<View style={styles.topnavRight}>
<TouchableOpacity
style={[styles.topnavBtn]}
onPress={_restore}
disabled={isLoading || isLoadingRestore || isLoadingPurchase}
>
{isLoadingRestore ? (
<ActivityIndicator color="white" />
) : (
<Text style={styles.topnavBtnTxt}>
{localize('iap.restore')}
</Text>
)}
</TouchableOpacity>
</View>
</View>
<View style={styles.featuresContainer}>
<LinearGradient
colors={['transparent', 'rgba(0, 0, 0, 0.9)']}
style={styles.featuresBackdrop}
/>
<Text style={styles.featuresTitle}>
{localize('iap.featurestitle')}
</Text>
<Text style={styles.featuresTxt}>{localize('iap.features')}</Text>
</View>
<View
style={[
styles.bottomContent,
{
backgroundColor: theme.bgColor,
},
]}
>
{iapList?.map((iap) => (
<SubscribeRow
key={iap.id}
isActive={iap.id === selectedIap?.id}
iap={iap}
onPress={setSelectedIap}
/>
))}
{isLoading && (
<View style={styles.loadingRows}>
<ActivityIndicator size="large" />
</View>
)}
<TouchableOpacity
onPress={_subscribe}
activeOpacity={0.6}
disabled={isLoading || isLoadingRestore || isLoadingPurchase}
style={[styles.btnMain, { backgroundColor: theme.primaryColor }]}
>
<View style={styles.btnMainTitleContainer}>
<Text
style={[
styles.btnMainTitle,
{ color: theme.txtColorOnPrimaryColor },
]}
>
{localize('iap.btnMain')}
</Text>
{selectedIap?.freeTrialDaysDuration && (
<Text
style={[
styles.btnMainSubtitle,
{ color: theme.txtColorOnPrimaryColor },
]}
>
{localize('iap.autodeductAfter', {
x: selectedIap.freeTrialDaysDuration,
})}
</Text>
)}
</View>
{isLoadingPurchase ? (
<ActivityIndicator
style={styles.btnMainArrow}
color={theme.txtColorOnPrimaryColor}
/>
) : (
<Icon
name="chevron-right"
size={20}
color={theme.txtColorOnPrimaryColor}
style={styles.btnMainArrow}
/>
)}
</TouchableOpacity>
<Link
style={styles.skip}
title={localize('iap.skip')}
onPress={_skip}
/>
<Text style={styles.disclaimer}>{localize('iap.disclaimer')}</Text>
<View style={styles.policies}>
<Link title={localize('iap.terms')} onPress={_openTerms} />
<Link title={localize('iap.privacy')} onPress={_openPrivacy} />
</View>
</View>
</View>
</View>
);
};
const SubscribeRow = (props: {
isActive: boolean;
iap: IapSubscription;
onPress: (iap: IapSubscription) => void;
}) => {
const theme = useTheme();
const { localize } = useLocalization();
const { iap } = props;
const isDarkTheme = useColorScheme() === 'dark';
return (
<TouchableOpacity
onPress={() => props.onPress(iap)}
activeOpacity={0.8}
style={[
styles.row,
props.isActive &&
(isDarkTheme ? styles.rowActiveDark : styles.rowActive),
]}
>
<View
style={[
styles.check,
{ borderColor: theme.primaryColor },
props.isActive && { backgroundColor: theme.primaryColor },
]}
>
{props.isActive && (
<Icon name="check" color={theme.txtColorOnPrimaryColor} size={14} />
)}
</View>
<View style={styles.rowContent}>
<View style={styles.rowTitleContainer}>
<Text style={styles.rowTitle}>
{localize('iap.rowTitle', {
price: iap.localizedPrice,
duration:
iap.durationMonth === 12
? localize('iap.rowTitleYear')
: localize('iap.rowTitleMonth'),
})}
</Text>
{iap.durationMonth !== 1 && (
<Text style={styles.rowPricePerMonth}>
{localize('iap.rowPricePerMonth', {
price: `${getCurrency(iap.localizedPrice)}${(
iap.price / iap.durationMonth
).toFixed(2)}`,
})}
</Text>
)}
</View>
{!!iap.freeTrialDaysDuration && (
<Text
style={[
styles.rowFreeTrial,
{
color: theme.primaryTxtColor,
},
]}
>
{localize('iap.freetrial', {
duration: iap.freeTrialDaysDuration,
})}
</Text>
)}
</View>
{!!iap.freeTrialDaysDuration && props.isActive && (
<Icon name="star" solid color="#efbb00" size={22} />
)}
</TouchableOpacity>
);
};
const styles = StyleSheet.create({
root: {},
headerImg: {
height: Dimensions.get('window').height - 300,
width: Dimensions.get('window').width,
borderTopLeftRadius: 15,
borderTopRightRadius: 15,
position: 'absolute',
left: 0,
right: 0,
top: 0,
overflow: 'hidden',
},
content: {
position: 'absolute',
bottom: 0,
left: 0,
right: 0,
top: 0,
justifyContent: 'flex-end',
},
bottomContent: {
borderTopLeftRadius: 15,
borderTopRightRadius: 15,
paddingTop: 10,
paddingBottom: 20,
},
row: {
paddingVertical: 10,
paddingHorizontal: 15,
marginHorizontal: 10,
borderRadius: 10,
marginVertical: 2,
flexDirection: 'row',
alignItems: 'center',
minHeight: 50,
},
rowActive: {
backgroundColor: '#eee',
},
rowActiveDark: {
backgroundColor: '#222',
},
rowContent: {
flex: 1,
},
rowTitleContainer: {
flexDirection: 'row',
},
check: {
borderWidth: 2,
borderRadius: 100,
height: 22,
width: 22,
justifyContent: 'center',
alignItems: 'center',
paddingLeft: 1,
marginRight: 10,
},
rowTitle: {
fontWeight: '900',
fontSize: 14,
},
rowPricePerMonth: {
fontWeight: '700',
fontSize: 13,
opacity: 0.7,
marginLeft: 5,
},
rowFreeTrial: {
fontWeight: '900',
fontSize: 10,
},
btnMain: {
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'center',
minHeight: 65,
marginHorizontal: 15,
borderRadius: 12,
marginTop: 15,
},
btnMainTitleContainer: {
alignItems: 'center',
},
btnMainTitle: {
fontSize: 20,
fontWeight: '900',
},
btnMainSubtitle: {
fontSize: 10,
fontWeight: '600',
},
btnMainArrow: {
position: 'absolute',
right: 15,
},
skip: {
marginTop: 10,
transform: [{ scale: 0.9 }],
},
disclaimer: {
paddingHorizontal: 20,
textAlign: 'center',
fontSize: 10,
lineHeight: 11,
marginTop: 0,
marginBottom: 0,
},
policies: {
flexDirection: 'row',
justifyContent: 'center',
paddingHorizontal: 20,
transform: [{ scale: 0.8 }],
},
featuresBackdropTop: {
position: 'absolute',
left: 0,
right: 0,
top: -50,
height: 150,
},
featuresBackdrop: {
position: 'absolute',
bottom: -30,
left: 0,
right: 0,
top: -50,
},
featuresContainer: {
paddingHorizontal: 15,
paddingBottom: 15,
paddingTop: 0,
},
featuresTitle: {
shadowColor: '#000',
shadowOffset: {
width: 0,
height: 0,
},
shadowOpacity: 0.5,
shadowRadius: 5,
color: 'white',
fontWeight: '900',
fontSize: 16,
marginBottom: 8,
},
featuresTxt: {
shadowColor: '#000',
shadowOffset: {
width: 0,
height: 0,
},
shadowOpacity: 0.5,
shadowRadius: 5,
color: 'white',
fontWeight: '500',
fontSize: 14,
lineHeight: 20,
marginLeft: 5,
},
topnav: {
flexDirection: 'row',
shadowColor: '#000',
shadowOffset: {
width: 0,
height: 0,
},
shadowOpacity: 0.9,
shadowRadius: 9,
position: 'absolute',
top: 0,
right: 0,
left: 0,
zIndex: 999,
paddingVertical: 15,
alignItems: 'center',
},
topnavTitle: {
flex: 1,
textAlign: 'center',
color: 'white',
fontWeight: '900',
},
topnavBtn: {
paddingHorizontal: 10,
paddingVertical: 5,
},
topnavBtnTxt: {
color: 'white',
fontWeight: '700',
},
topnavLeft: {
position: 'absolute',
left: 0,
zIndex: 9999,
},
topnavRight: {
position: 'absolute',
right: 0,
zIndex: 9999,
},
loadingRows: {
marginTop: 20,
marginBottom: 20,
},
});
export const UpgradeViewSheet = () => {
const sheet = useBottomSheet();
console.log('[rnx] UpgradeViewSheet render');
return (
<Component
screenHeight={Dimensions.get('window').height - 50}
onCancel={() => sheet.hideBottomSheet()}
/>
);
};
export default Component;
import { useCallback } from 'react';
import { useGlobalState } from '../store';
export const useIsPremium = () => {
const { globalState, setGlobalState } = useGlobalState<{
isPremium: boolean;
}>();
const setIsPremium = useCallback(
(isPremium: boolean) => {
setGlobalState({ isPremium });
},
[setGlobalState]
);
return { isPremium: globalState.isPremium, setIsPremium };
};
import 'react';
import { useCallback } from 'react';
import { Alert } from 'react-native';
import { useLocalization } from 'react-native-rnx';
import { useUpgrade } from './useUpgrade';
import { useIsPremium } from './useIsPremium';
export const usePremiumGuard = () => {
const { isPremium } = useIsPremium();
const upgrade = useUpgrade();
const { localize } = useLocalization();
const continueIfPremium = useCallback(() => {
return new Promise<void>((resolve, reject) => {
if (isPremium) {
return resolve();
}
Alert.alert(localize('iap.guardTitle'), localize('iap.guardMessage'), [
{
text: localize('global.learnmore'),
style: 'default',
onPress: () => {
upgrade();
return reject();
},
},
{
text: localize('global.cancel'),
style: 'cancel',
onPress: () => {
return reject();
},
},
]);
});
}, [isPremium, localize, upgrade]);
return { continueIfPremium };
};
import React from 'react';
import { useCallback } from 'react';
import { Dimensions } from 'react-native';
import { useBottomSheet } from 'react-native-rnx';
import { UpgradeViewSheet } from './UpgradeView';
export const useUpgrade = () => {
const sheet = useBottomSheet();
const upgrade = useCallback(() => {
const height = Dimensions.get('window').height - 50;
sheet.show({
snapPoints: [height],
hideHandle: true,
element: <UpgradeViewSheet />,
});
}, [sheet]);
return upgrade;
};