@cafebazaar/react-native-poolakey
Version:
ReactNative implementation of CafeBazaar's in-app payment SDK
95 lines (93 loc) • 2.77 kB
JavaScript
;
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