UNPKG

@cafebazaar/react-native-poolakey

Version:

ReactNative implementation of CafeBazaar's in-app payment SDK

95 lines (93 loc) 2.77 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "BazaarNotFoundError", { enumerable: true, get: function () { return _exceptions.BazaarNotFoundError; } }); Object.defineProperty(exports, "DisconnectedError", { enumerable: true, get: function () { return _exceptions.DisconnectedError; } }); Object.defineProperty(exports, "ItemNotFoundError", { enumerable: true, get: function () { return _exceptions.ItemNotFoundError; } }); exports.default = void 0; exports.useBazaar = useBazaar; var _react = require("react"); var _bridge = _interopRequireDefault(require("./bridge")); var _exceptions = require("./exceptions"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } let devConnected = 0; let isConnected = false; let isConnecting; let initedRsaKey; _bridge.default.addDisconnectListener(() => { isConnected = false; }); function ensureConnected() { if (!devConnected) { return Promise.reject('SDK is not connected to bazaar!'); } if (isConnected) { return Promise.resolve(); } if (!isConnecting) { isConnecting = _bridge.default.connect(initedRsaKey).then(() => { isConnected = true; isConnecting = undefined; }); } return isConnecting; } function wrapConn(fn) { return async function () { try { await ensureConnected(); return await fn.apply(this, arguments); } catch (e) { throw (0, _exceptions.praseError)(new Error(e + '')); } }; } const poolakey = { connect(rsaKey) { initedRsaKey = rsaKey || null; devConnected++; return ensureConnected().catch(_exceptions.praseError); }, async disconnect() { devConnected--; if (!devConnected) { await _bridge.default.disconnect(); } }, purchaseProduct: wrapConn(_bridge.default.purchaseProduct), consumePurchase: wrapConn(_bridge.default.consumePurchase), subscribeProduct: wrapConn(_bridge.default.subscribeProduct), getPurchasedProducts: wrapConn(_bridge.default.getPurchasedProducts), getSubscribedProducts: wrapConn(_bridge.default.getSubscribedProducts), queryPurchaseProduct: wrapConn(_bridge.default.queryPurchaseProduct), querySubscribeProduct: wrapConn(_bridge.default.querySubscribeProduct), getInAppSkuDetails: wrapConn(_bridge.default.getInAppSkuDetails), getSubscriptionSkuDetails: wrapConn(_bridge.default.getSubscriptionSkuDetails) }; function useBazaar(rsaKey) { (0, _react.useEffect)(() => { poolakey.connect(rsaKey); return () => { poolakey.disconnect(); }; }, []); // eslint-disable-line react-hooks/exhaustive-deps return poolakey; } var _default = exports.default = poolakey; //# sourceMappingURL=index.js.map