@stripe/stripe-react-native
Version:
Stripe SDK for React Native
2 lines • 10.3 kB
JavaScript
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.useEmbeddedPaymentElement=useEmbeddedPaymentElement;var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _asyncToGenerator2=_interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _reactNative=require("react-native");var _NativeStripeSdkModule=_interopRequireDefault(require("../specs/NativeStripeSdkModule"));var _react=_interopRequireWildcard(require("react"));var _events=require("../events");var _NativeEmbeddedPaymentElement=_interopRequireWildcard(require("../specs/NativeEmbeddedPaymentElement"));var _jsxRuntime=require("react/jsx-runtime");var _jsxFileName="/Users/tianzhao/stripe/stripe-react-native/src/types/EmbeddedPaymentElement.tsx";function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap(),n=new WeakMap();return(_interopRequireWildcard=function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var o,i,f={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return f;if(o=t?n:r){if(o.has(e))return o.get(e);o.set(e,f);}for(var _t in e)"default"!==_t&&{}.hasOwnProperty.call(e,_t)&&((i=(o=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,_t))&&(i.get||i.set)?o(f,_t,i):f[_t]=e[_t]);return f;})(e,t);}var EmbeddedPaymentElement=function(){function EmbeddedPaymentElement(){(0,_classCallCheck2.default)(this,EmbeddedPaymentElement);}return(0,_createClass2.default)(EmbeddedPaymentElement,[{key:"update",value:(function(){var _update=(0,_asyncToGenerator2.default)(function*(intentConfig){var result=yield _NativeStripeSdkModule.default.updateEmbeddedPaymentElement(intentConfig);return result;});function update(_x){return _update.apply(this,arguments);}return update;}())},{key:"confirm",value:(function(){var _confirm=(0,_asyncToGenerator2.default)(function*(){var result=yield _NativeStripeSdkModule.default.confirmEmbeddedPaymentElement(-1);return result;});function confirm(){return _confirm.apply(this,arguments);}return confirm;}())},{key:"clearPaymentOption",value:function clearPaymentOption(){_NativeStripeSdkModule.default.clearEmbeddedPaymentOption(-1);}}]);}();var confirmHandlerCallback=null;var confirmationTokenHandlerCallback=null;var formSheetActionConfirmCallback=null;var customPaymentMethodConfirmCallback=null;var rowSelectionCallback=null;function createEmbeddedPaymentElement(_x2,_x3){return _createEmbeddedPaymentElement.apply(this,arguments);}function _createEmbeddedPaymentElement(){_createEmbeddedPaymentElement=(0,_asyncToGenerator2.default)(function*(intentConfig,configuration){setupConfirmAndSelectionHandlers(intentConfig,configuration);yield _NativeStripeSdkModule.default.createEmbeddedPaymentElement(intentConfig,configuration);return new EmbeddedPaymentElement();});return _createEmbeddedPaymentElement.apply(this,arguments);}function setupConfirmAndSelectionHandlers(intentConfig,configuration){var _configuration$formSh,_configuration$rowSel;var confirmHandler=intentConfig.confirmHandler;if(confirmHandler){var _confirmHandlerCallba;(_confirmHandlerCallba=confirmHandlerCallback)==null||_confirmHandlerCallba.remove();confirmHandlerCallback=(0,_events.addListener)('onConfirmHandlerCallback',function(_ref){var paymentMethod=_ref.paymentMethod,shouldSavePaymentMethod=_ref.shouldSavePaymentMethod;confirmHandler(paymentMethod,shouldSavePaymentMethod,_NativeStripeSdkModule.default.intentCreationCallback);});}var confirmationTokenConfirmHandler=intentConfig.confirmationTokenConfirmHandler;if(confirmationTokenConfirmHandler){var _confirmationTokenHan;(_confirmationTokenHan=confirmationTokenHandlerCallback)==null||_confirmationTokenHan.remove();confirmationTokenHandlerCallback=(0,_events.addListener)('onConfirmationTokenHandlerCallback',function(_ref2){var confirmationToken=_ref2.confirmationToken;confirmationTokenConfirmHandler(confirmationToken,_NativeStripeSdkModule.default.confirmationTokenCreationCallback);});}if(((_configuration$formSh=configuration.formSheetAction)==null?void 0:_configuration$formSh.type)==='confirm'){var confirmFormSheetHandler=configuration.formSheetAction.onFormSheetConfirmComplete;if(confirmFormSheetHandler){var _formSheetActionConfi;(_formSheetActionConfi=formSheetActionConfirmCallback)==null||_formSheetActionConfi.remove();formSheetActionConfirmCallback=(0,_events.addListener)('embeddedPaymentElementFormSheetConfirmComplete',function(result){confirmFormSheetHandler(result);});}}if(configuration.customPaymentMethodConfiguration){var customPaymentMethodHandler=configuration.customPaymentMethodConfiguration.confirmCustomPaymentMethodCallback;if(customPaymentMethodHandler){var _customPaymentMethodC;(_customPaymentMethodC=customPaymentMethodConfirmCallback)==null||_customPaymentMethodC.remove();customPaymentMethodConfirmCallback=(0,_events.addListener)('onCustomPaymentMethodConfirmHandlerCallback',function(_ref3){var customPaymentMethod=_ref3.customPaymentMethod,billingDetails=_ref3.billingDetails;customPaymentMethodHandler(customPaymentMethod,billingDetails,function(result){_NativeStripeSdkModule.default.customPaymentMethodResultCallback(result);});});}}if(((_configuration$rowSel=configuration.rowSelectionBehavior)==null?void 0:_configuration$rowSel.type)==='immediateAction'){var rowSelectionHandler=configuration.rowSelectionBehavior.onSelectPaymentOption;if(rowSelectionHandler){var _rowSelectionCallback;(_rowSelectionCallback=rowSelectionCallback)==null||_rowSelectionCallback.remove();rowSelectionCallback=(0,_events.addListener)('embeddedPaymentElementRowSelectionImmediateAction',function(){rowSelectionHandler();});}}}function useEmbeddedPaymentElement(intentConfig,configuration){var _this=this;var isAndroid=_reactNative.Platform.OS==='android';var elementRef=(0,_react.useRef)(null);var _useState=(0,_react.useState)(null),_useState2=(0,_slicedToArray2.default)(_useState,2),element=_useState2[0],setElement=_useState2[1];var _useState3=(0,_react.useState)(null),_useState4=(0,_slicedToArray2.default)(_useState3,2),paymentOption=_useState4[0],setPaymentOption=_useState4[1];var _useState5=(0,_react.useState)(),_useState6=(0,_slicedToArray2.default)(_useState5,2),height=_useState6[0],setHeight=_useState6[1];var viewRef=(0,_react.useRef)(null);var _useState7=(0,_react.useState)(null),_useState8=(0,_slicedToArray2.default)(_useState7,2),loadingError=_useState8[0],setLoadingError=_useState8[1];var isLoaded=(0,_react.useMemo)(function(){return height!==undefined&&height>1;},[height]);function getElementOrThrow(ref){if(!ref.current){throw new Error('EmbeddedPaymentElement is not ready yet – wait until it finishes loading before calling this API.');}return ref.current;}(0,_react.useEffect)(function(){var active=true;(0,_asyncToGenerator2.default)(function*(){var el=yield createEmbeddedPaymentElement(intentConfig,configuration);if(!active)return;elementRef.current=el;setElement(el);})();return function(){active=false;elementRef.current=null;setElement(null);};},[intentConfig,configuration,viewRef,isAndroid]);(0,_react.useEffect)(function(){var sub=(0,_events.addListener)('embeddedPaymentElementDidUpdatePaymentOption',function(_ref5){var opt=_ref5.paymentOption;return setPaymentOption(opt!=null?opt:null);});return function(){return sub.remove();};});(0,_react.useEffect)(function(){var sub=(0,_events.addListener)('embeddedPaymentElementDidUpdateHeight',function(_ref6){var h=_ref6.height;if(h>0||isAndroid&&h===0){_reactNative.LayoutAnimation.configureNext(_reactNative.LayoutAnimation.Presets.easeInEaseOut);setHeight(h);}});return function(){return sub.remove();};},[isAndroid]);(0,_react.useEffect)(function(){var sub=(0,_events.addListener)('embeddedPaymentElementLoadingFailed',function(nativeError){setLoadingError(new Error(nativeError.message));});return function(){return sub.remove();};},[]);var embeddedPaymentElementView=(0,_react.useMemo)(function(){if(isAndroid&&configuration&&intentConfig){return(0,_jsxRuntime.jsx)(_NativeEmbeddedPaymentElement.default,{ref:viewRef,style:[{width:'100%',height:height}],configuration:configuration,intentConfiguration:intentConfig});}if(!element)return null;return(0,_jsxRuntime.jsx)(_NativeEmbeddedPaymentElement.default,{ref:viewRef,style:{width:'100%',height:height},configuration:configuration,intentConfiguration:intentConfig});},[configuration,element,height,intentConfig,isAndroid]);var confirm=(0,_react.useCallback)(function(){var currentRef=viewRef.current;if(isAndroid){if(currentRef){var promise=new Promise(function(resolve){var sub=(0,_events.addListener)('embeddedPaymentElementFormSheetConfirmComplete',function(result){sub.remove();resolve(result);});});_NativeEmbeddedPaymentElement.Commands.confirm(currentRef);return promise;}else{return Promise.reject(new Error('Unable to find Android embedded payment element view!'));}}return getElementOrThrow(elementRef).confirm();},[isAndroid]);var update=(0,_react.useCallback)(function(cfg){if(isAndroid){var currentRef=viewRef.current;if(currentRef){return new Promise(function(resolve){var sub=(0,_events.addListener)('embeddedPaymentElementUpdateComplete',function(result){sub.remove();resolve(result);});_NativeEmbeddedPaymentElement.Commands.update(currentRef,JSON.stringify(cfg));});}return Promise.reject(new Error('Unable to find Android embedded payment element view!'));}return getElementOrThrow(elementRef).update(cfg);},[isAndroid]);var clearPaymentOption=(0,_react.useCallback)(function(){if(isAndroid){var tag=(0,_reactNative.findNodeHandle)(viewRef.current);if(tag==null){return Promise.reject(new Error('Unable to find Android view handle'));}return _NativeStripeSdkModule.default.clearEmbeddedPaymentOption(tag);}getElementOrThrow(elementRef).clearPaymentOption();return Promise.resolve();},[isAndroid]);return{embeddedPaymentElementView:embeddedPaymentElementView,paymentOption:paymentOption,confirm:confirm,update:update,clearPaymentOption:clearPaymentOption,loadingError:loadingError,isLoaded:isLoaded};}
//# sourceMappingURL=EmbeddedPaymentElement.js.map