UNPKG

@shopgate/engage

Version:
5 lines 5.74 kB
import _regeneratorRuntime from"@babel/runtime/regenerator";var _excluded=["publishableKey","onChange","active","activePaymentMeta"];function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};return _extends.apply(this,arguments);}function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value;}catch(error){reject(error);return;}if(info.done){resolve(value);}else{Promise.resolve(value).then(_next,_throw);}}function _asyncToGenerator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value);}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err);}_next(undefined);});};}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_nonIterableRest();}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance");}function _iterableToArrayLimit(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=arr[Symbol.iterator](),_s;!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break;}}catch(err){_d=true;_e=err;}finally{try{if(!_n&&_i["return"]!=null)_i["return"]();}finally{if(_d)throw _e;}}return _arr;}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr;}function _objectWithoutProperties(source,excluded){if(source==null)return{};var target=_objectWithoutPropertiesLoose(source,excluded);var key,i;if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i<sourceSymbolKeys.length;i++){key=sourceSymbolKeys[i];if(excluded.indexOf(key)>=0)continue;if(!Object.prototype.propertyIsEnumerable.call(source,key))continue;target[key]=source[key];}}return target;}function _objectWithoutPropertiesLoose(source,excluded){if(source==null)return{};var target={};var sourceKeys=Object.keys(source);var key,i;for(i=0;i<sourceKeys.length;i++){key=sourceKeys[i];if(excluded.indexOf(key)>=0)continue;target[key]=source[key];}return target;}import React,{useEffect,useState,Fragment}from'react';import PropTypes from'prop-types';import{css}from'glamor';import Button from"../../components/PaymentMethodButton";import{i18n}from"../../../core/helpers/i18n";import{loadSdk}from"./sdk";import{useCheckoutContext}from"../../hooks/common";import connect from"./StripeButton.connector";import googlePayLogo from"./googlepay.png";import applePayLogo from"./applepay.svg";var styles={mark:css({height:32}).toString()};/** * Stripe * @param {Object} props Props * @returns {JSX} */var StripeButton=function StripeButton(_ref){var publishableKey=_ref.publishableKey,_onChange=_ref.onChange,active=_ref.active,subMethod=_ref.activePaymentMeta,props=_objectWithoutProperties(_ref,_excluded);var _useState=useState(null),_useState2=_slicedToArray(_useState,2),stripeRequest=_useState2[0],setStripeRequest=_useState2[1];var _useState3=useState(null),_useState4=_slicedToArray(_useState3,2),stripeRequestType=_useState4[0],setStripeRequestType=_useState4[1];var _useCheckoutContext=useCheckoutContext(),order=_useCheckoutContext.order;useEffect(function(){if(!publishableKey){return;}/** */var fn=/*#__PURE__*/function(){var _ref2=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(){var _order$addressSequenc,_order$addressSequenc2;var stripe,req,availability;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:if(order){_context.next=2;break;}return _context.abrupt("return");case 2:_context.next=4;return loadSdk(publishableKey);case 4:stripe=_context.sent;req=stripe.paymentRequest({country:(_order$addressSequenc=order.addressSequences)===null||_order$addressSequenc===void 0?void 0:(_order$addressSequenc2=_order$addressSequenc[0])===null||_order$addressSequenc2===void 0?void 0:_order$addressSequenc2.country,currency:order.currencyCode.toLowerCase(),total:{label:'Checkout',amount:Math.round(order.total*100)}});_context.next=8;return req.canMakePayment();case 8:availability=_context.sent;if(availability){_context.next=11;break;}return _context.abrupt("return");case 11:setStripeRequest(req);setStripeRequestType(availability);case 13:case"end":return _context.stop();}},_callee);}));return function fn(){return _ref2.apply(this,arguments);};}();fn();},[order,publishableKey]);return React.createElement(Fragment,null,React.createElement(Button,_extends({},props,{onChange:function onChange(){return _onChange(null);},active:active&&!subMethod}),i18n.text('checkout.payment.buttons.stripe')),stripeRequest&&(stripeRequestType===null||stripeRequestType===void 0?void 0:stripeRequestType.applePay)?React.createElement(Button,_extends({},props,{active:!!(active&&subMethod),onChange:function onChange(){return _onChange({stripeRequest:stripeRequest,stripeRequestType:stripeRequestType});}}),React.createElement("img",{className:styles.mark,alt:"ApplePay",src:applePayLogo})):null,stripeRequest&&!(stripeRequestType===null||stripeRequestType===void 0?void 0:stripeRequestType.applePay)?React.createElement(Button,_extends({},props,{active:!!(active&&subMethod),onChange:function onChange(){return _onChange({stripeRequest:stripeRequest,stripeRequestType:stripeRequestType});}}),React.createElement("img",{className:styles.mark,alt:"GooglePay",src:googlePayLogo})):null);};StripeButton.defaultProps={publishableKey:null,activePaymentMeta:null};export default connect(StripeButton);