fontdue-js 1.10.2 → 1.11.0-alpha2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/dist/__generated__/CartQuery.graphql.js +134 -122
  2. package/dist/__generated__/StoreModalContainerQuery.graphql.d.ts +0 -2
  3. package/dist/__generated__/StoreModalContainerQuery.graphql.js +7 -35
  4. package/dist/__generated__/StoreModalReviewCompleteOrderMutation.graphql.js +71 -15
  5. package/dist/__generated__/StoreModalReviewQuery.graphql.d.ts +1 -1
  6. package/dist/__generated__/StoreModalReviewQuery.graphql.js +148 -51
  7. package/dist/__generated__/StoreModalReview_order.graphql.d.ts +9 -0
  8. package/dist/__generated__/StoreModalReview_order.graphql.js +67 -20
  9. package/dist/__generated__/StripeProvider_viewer.graphql.d.ts +5 -0
  10. package/dist/__generated__/StripeProvider_viewer.graphql.js +25 -1
  11. package/dist/components/Cart/Checkout.d.ts +2 -1
  12. package/dist/components/Cart/Checkout.js +14 -4
  13. package/dist/components/Cart/index.js +2 -1
  14. package/dist/components/FontdueProvider/index.d.ts +2 -1
  15. package/dist/components/FontdueProvider/index.js +3 -1
  16. package/dist/components/Root/index.js +1 -0
  17. package/dist/components/StoreModal/StoreModalCheckout.js +2 -1
  18. package/dist/components/StoreModal/StoreModalContainer.js +3 -6
  19. package/dist/components/StoreModal/StoreModalReview.js +70 -50
  20. package/dist/components/StripeProvider/index.d.ts +2 -1
  21. package/dist/components/StripeProvider/index.js +14 -4
  22. package/dist/components/elements/StoreModalReviewConfirm/index.d.ts +1 -0
  23. package/dist/components/elements/StoreModalReviewConfirm/index.js +3 -2
  24. package/dist/components/elements/StoreModalReviewLayout/index.js +1 -3
  25. package/dist/relay-environment.d.ts +1 -0
  26. package/dist/relay-environment.js +2 -1
  27. package/package.json +2 -2
@@ -9,11 +9,25 @@ exports.default = void 0;
9
9
  // @ts-nocheck
10
10
 
11
11
  const node = function () {
12
- var v0 = [{
13
- "args": null,
14
- "kind": "FragmentSpread",
15
- "name": "StoreModalReviewIdentity_identity"
16
- }];
12
+ var v0 = {
13
+ "alias": null,
14
+ "args": null,
15
+ "kind": "ScalarField",
16
+ "name": "email",
17
+ "storageKey": null
18
+ },
19
+ v1 = {
20
+ "alias": null,
21
+ "args": null,
22
+ "kind": "ScalarField",
23
+ "name": "name",
24
+ "storageKey": null
25
+ },
26
+ v2 = {
27
+ "args": null,
28
+ "kind": "FragmentSpread",
29
+ "name": "StoreModalReviewIdentity_identity"
30
+ };
17
31
  return {
18
32
  "argumentDefinitions": [],
19
33
  "kind": "Fragment",
@@ -26,28 +40,54 @@ const node = function () {
26
40
  "kind": "LinkedField",
27
41
  "name": "customer",
28
42
  "plural": false,
29
- "selections": [{
43
+ "selections": [v0 /*: any*/, v1 /*: any*/],
44
+
45
+ "storageKey": null
46
+ }, {
47
+ "alias": null,
48
+ "args": null,
49
+ "concreteType": "Identity",
50
+ "kind": "LinkedField",
51
+ "name": "billingIdentity",
52
+ "plural": false,
53
+ "selections": [v1 /*: any*/, v0 /*: any*/, {
30
54
  "alias": null,
31
55
  "args": null,
32
56
  "kind": "ScalarField",
33
- "name": "email",
57
+ "name": "phone",
34
58
  "storageKey": null
35
59
  }, {
36
60
  "alias": null,
37
61
  "args": null,
38
62
  "kind": "ScalarField",
39
- "name": "name",
63
+ "name": "street",
40
64
  "storageKey": null
41
- }],
42
- "storageKey": null
43
- }, {
44
- "alias": null,
45
- "args": null,
46
- "concreteType": "Identity",
47
- "kind": "LinkedField",
48
- "name": "billingIdentity",
49
- "plural": false,
50
- "selections": v0 /*: any*/,
65
+ }, {
66
+ "alias": null,
67
+ "args": null,
68
+ "kind": "ScalarField",
69
+ "name": "locality",
70
+ "storageKey": null
71
+ }, {
72
+ "alias": null,
73
+ "args": null,
74
+ "kind": "ScalarField",
75
+ "name": "administrativeArea",
76
+ "storageKey": null
77
+ }, {
78
+ "alias": null,
79
+ "args": null,
80
+ "kind": "ScalarField",
81
+ "name": "country",
82
+ "storageKey": null
83
+ }, {
84
+ "alias": null,
85
+ "args": null,
86
+ "kind": "ScalarField",
87
+ "name": "zip",
88
+ "storageKey": null
89
+ }, v2 /*: any*/],
90
+
51
91
  "storageKey": null
52
92
  }, {
53
93
  "alias": null,
@@ -56,7 +96,8 @@ const node = function () {
56
96
  "kind": "LinkedField",
57
97
  "name": "licenseeIdentity",
58
98
  "plural": false,
59
- "selections": v0 /*: any*/,
99
+ "selections": [v2 /*: any*/],
100
+
60
101
  "storageKey": null
61
102
  }, {
62
103
  "alias": null,
@@ -161,6 +202,12 @@ const node = function () {
161
202
  "storageKey": null
162
203
  }],
163
204
  "storageKey": null
205
+ }, {
206
+ "alias": null,
207
+ "args": null,
208
+ "kind": "ScalarField",
209
+ "name": "completeUrl",
210
+ "storageKey": null
164
211
  }, {
165
212
  "args": null,
166
213
  "kind": "FragmentSpread",
@@ -174,6 +221,6 @@ const node = function () {
174
221
  "abstractKey": null
175
222
  };
176
223
  }();
177
- node.hash = 'c7fc7251b9f1cb7f33e0f7a436498492';
224
+ node.hash = '039b531ec1968e12d77dd23e0493a513';
178
225
  var _default = node;
179
226
  exports.default = _default;
@@ -7,6 +7,11 @@ export declare type StripeProvider_viewer = {
7
7
  readonly stripeCredentials: {
8
8
  readonly stripePublishableKey: string;
9
9
  } | null;
10
+ readonly currentOrder: {
11
+ readonly stripePaymentIntent: {
12
+ readonly clientSecret: string | null;
13
+ } | null;
14
+ } | null;
10
15
  readonly " $refType": "StripeProvider_viewer";
11
16
  };
12
17
  export declare type StripeProvider_viewer$data = StripeProvider_viewer;
@@ -43,10 +43,34 @@ const node = {
43
43
  "storageKey": null
44
44
  }],
45
45
  "storageKey": null
46
+ }, {
47
+ "alias": null,
48
+ "args": null,
49
+ "concreteType": "Order",
50
+ "kind": "LinkedField",
51
+ "name": "currentOrder",
52
+ "plural": false,
53
+ "selections": [{
54
+ "alias": null,
55
+ "args": null,
56
+ "concreteType": "StripePaymentIntent",
57
+ "kind": "LinkedField",
58
+ "name": "stripePaymentIntent",
59
+ "plural": false,
60
+ "selections": [{
61
+ "alias": null,
62
+ "args": null,
63
+ "kind": "ScalarField",
64
+ "name": "clientSecret",
65
+ "storageKey": null
66
+ }],
67
+ "storageKey": null
68
+ }],
69
+ "storageKey": null
46
70
  }],
47
71
  "type": "Viewer",
48
72
  "abstractKey": null
49
73
  };
50
- node.hash = '700906fdf30c6e4aefcb6eb2b1a7eed5';
74
+ node.hash = '109e9cbd38d24e7517934f5f1e734339';
51
75
  var _default = node;
52
76
  exports.default = _default;
@@ -12,6 +12,7 @@ interface Checkout_props {
12
12
  error?: string | null;
13
13
  saveText?: string | null;
14
14
  onCancel: () => void;
15
+ skipPaymentMethod?: boolean;
15
16
  }
16
- declare const Checkout: ({ order, viewer, checkoutStep, setCheckoutStep, onScrollToTop, onComplete, error: errorProp, saveText, onCancel, }: Checkout_props) => JSX.Element;
17
+ declare const Checkout: ({ order, viewer, checkoutStep, setCheckoutStep, onScrollToTop, onComplete, error: errorProp, saveText, onCancel, skipPaymentMethod, }: Checkout_props) => JSX.Element;
17
18
  export default Checkout;
@@ -45,7 +45,8 @@ const Checkout = _ref => {
45
45
  onComplete,
46
46
  error: errorProp,
47
47
  saveText = 'Next',
48
- onCancel
48
+ onCancel,
49
+ skipPaymentMethod = false
49
50
  } = _ref;
50
51
  const orderData = (0, _reactRelay.useFragment)(_Checkout_order !== void 0 ? _Checkout_order : (_Checkout_order = require("../../__generated__/Checkout_order.graphql"), _Checkout_order.hash && _Checkout_order.hash !== "693ae9c7f2c7fe9a179bad7b86c16928" && console.error("The definition of 'Checkout_order' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _Checkout_order), order);
51
52
  const viewerData = (0, _reactRelay.useFragment)(_Checkout_viewer !== void 0 ? _Checkout_viewer : (_Checkout_viewer = require("../../__generated__/Checkout_viewer.graphql"), _Checkout_viewer.hash && _Checkout_viewer.hash !== "d20d03a2aab3f8bc454ac19fc6368178" && console.error("The definition of 'Checkout_viewer' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _Checkout_viewer), viewer);
@@ -126,8 +127,16 @@ const Checkout = _ref => {
126
127
  onCompleted: (res, errors) => onCompleted(res, errors, onSuccess)
127
128
  });
128
129
  };
129
- const stripe = (0, _reactStripeJs.useStripe)();
130
- const elements = (0, _reactStripeJs.useElements)();
130
+ let stripe;
131
+ let elements;
132
+ if (!skipPaymentMethod) {
133
+ // TODO this seems like it shouldn't be necessary, once we have items in the
134
+ // cart and we click "checkout", the order should have already updated with
135
+ // a clientSecret -- is it possible we need to add to the mutation the fragment
136
+ // for the StripeProvider?
137
+ stripe = (0, _reactStripeJs.useStripe)();
138
+ elements = (0, _reactStripeJs.useElements)();
139
+ }
131
140
  const handleSubmit = () => {
132
141
  setSubmitting(true);
133
142
  setError(null);
@@ -150,7 +159,7 @@ const Checkout = _ref => {
150
159
  licenseeIdentity: licenseeIsBillingIdentity ? null : licenseeIdentity
151
160
  }
152
161
  }, () => {
153
- if (orderData !== null && orderData !== void 0 && orderData.canCompleteWithCoupon) {
162
+ if (orderData !== null && orderData !== void 0 && orderData.canCompleteWithCoupon || skipPaymentMethod) {
154
163
  onComplete();
155
164
  } else {
156
165
  setCheckoutStep(_CheckoutSteps.default.Payment);
@@ -395,6 +404,7 @@ const Checkout = _ref => {
395
404
  className: "checkout-modal__customer-info__check"
396
405
  }, /*#__PURE__*/_react.default.createElement(_Icons.Check, null)))));
397
406
  if (checkoutStep === _CheckoutSteps.default.Payment) {
407
+ console.log('PAYMent step');
398
408
  return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, customerBreadcrumb, billingBreadcrumb, licenseeBreadcrumb, /*#__PURE__*/_react.default.createElement("div", {
399
409
  className: "checkout-modal__section"
400
410
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -26,7 +26,8 @@ const CartBase = _ref => {
26
26
  status: status
27
27
  });
28
28
  return /*#__PURE__*/_react.default.createElement(_StripeProvider.default, {
29
- viewer: viewer
29
+ viewer: viewer,
30
+ requireClientSecret: false
30
31
  }, /*#__PURE__*/_react.default.createElement(_CartOrder.default, {
31
32
  viewer: viewer,
32
33
  order: currentOrder,
@@ -4,8 +4,9 @@ import { Components } from '../ComponentsContext';
4
4
  export interface FontdueProvider_props {
5
5
  children?: React.ReactNode;
6
6
  url: string;
7
+ stripeIntegration?: 'payment-element' | 'card-element';
7
8
  config?: Config;
8
9
  components?: Components;
9
10
  }
10
- declare const FontdueProvider: ({ children, url, config, components, }: FontdueProvider_props) => JSX.Element;
11
+ declare const FontdueProvider: ({ children, url, stripeIntegration, config, components, }: FontdueProvider_props) => JSX.Element;
11
12
  export default FontdueProvider;
@@ -21,11 +21,13 @@ const FontdueProvider = _ref => {
21
21
  let {
22
22
  children,
23
23
  url,
24
+ stripeIntegration,
24
25
  config,
25
26
  components
26
27
  } = _ref;
27
28
  const environment = (0, _react.useRef)((0, _relayEnvironment.default)({
28
- url
29
+ url,
30
+ stripeIntegration
29
31
  }));
30
32
  return /*#__PURE__*/_react.default.createElement(_reactRelay.RelayEnvironmentProvider, {
31
33
  environment: environment.current
@@ -124,6 +124,7 @@ const Root = props => {
124
124
  }, []);
125
125
  return /*#__PURE__*/_react.default.createElement(_FontdueProvider.default, {
126
126
  url: props.url,
127
+ stripeIntegration: props.stripeIntegration,
127
128
  config: props.config,
128
129
  components: props.components
129
130
  }, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, Array.from(elements).map(_ref => {
@@ -56,7 +56,8 @@ const StoreModalCheckout = _ref => {
56
56
  onCancel: () => {},
57
57
  onComplete: handleComplete,
58
58
  saveText: canSkipCheckout ? 'Save' : 'Next',
59
- error: checkoutError
59
+ error: checkoutError,
60
+ skipPaymentMethod: true
60
61
  })
61
62
  });
62
63
  };
@@ -9,7 +9,6 @@ var _reactRedux = require("react-redux");
9
9
  var _StoreModalContainer = _interopRequireDefault(require("../elements/StoreModalContainer"));
10
10
  var _reactRelay = require("react-relay");
11
11
  var _relayRuntime = require("relay-runtime");
12
- var _StripeProvider = _interopRequireDefault(require("../StripeProvider"));
13
12
  var _StoreModalCheckoutContext = _interopRequireDefault(require("./StoreModalCheckoutContext"));
14
13
  var _CheckoutSteps = _interopRequireDefault(require("../Cart/CheckoutSteps"));
15
14
  var _StoreModalLoadingScreen = _interopRequireDefault(require("../elements/StoreModalLoadingScreen"));
@@ -42,7 +41,7 @@ const StoreModalContainer = _ref => {
42
41
  let {
43
42
  children
44
43
  } = _ref;
45
- const data = (0, _reactRelay.useLazyLoadQuery)(_StoreModalContainerQuery !== void 0 ? _StoreModalContainerQuery : (_StoreModalContainerQuery = require("../../__generated__/StoreModalContainerQuery.graphql"), _StoreModalContainerQuery.hash && _StoreModalContainerQuery.hash !== "81f28eb741b23eaa8bce3bdbe1635ea9" && console.error("The definition of 'StoreModalContainerQuery' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _StoreModalContainerQuery), {});
44
+ const data = (0, _reactRelay.useLazyLoadQuery)(_StoreModalContainerQuery !== void 0 ? _StoreModalContainerQuery : (_StoreModalContainerQuery = require("../../__generated__/StoreModalContainerQuery.graphql"), _StoreModalContainerQuery.hash && _StoreModalContainerQuery.hash !== "67cf3b7a14c2b8ff47a8138e0f234624" && console.error("The definition of 'StoreModalContainerQuery' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _StoreModalContainerQuery), {});
46
45
  const dispatch = (0, _reactRedux.useDispatch)();
47
46
  const showCartButton = ((_currentOrder$orderIt = (_currentOrder = data.viewer.currentOrder) === null || _currentOrder === void 0 ? void 0 : (_currentOrder$orderIt2 = _currentOrder.orderItems) === null || _currentOrder$orderIt2 === void 0 ? void 0 : _currentOrder$orderIt2.length) !== null && _currentOrder$orderIt !== void 0 ? _currentOrder$orderIt : 0) > 0;
48
47
  const handleClose = (0, _react.useCallback)(() => {
@@ -73,9 +72,7 @@ const StoreModalContainer = _ref => {
73
72
  };
74
73
  const [checkoutStep, setCheckoutStep] = (0, _react.useState)(_CheckoutSteps.default.Customer);
75
74
  const [checkoutError, setCheckoutError] = (0, _react.useState)(null);
76
- return /*#__PURE__*/_react.default.createElement(_StripeProvider.default, {
77
- viewer: data.viewer
78
- }, /*#__PURE__*/_react.default.createElement(_StoreModalCheckoutContext.default.Provider, {
75
+ return /*#__PURE__*/_react.default.createElement(_StoreModalCheckoutContext.default.Provider, {
79
76
  value: {
80
77
  checkoutStep,
81
78
  setCheckoutStep,
@@ -96,7 +93,7 @@ const StoreModalContainer = _ref => {
96
93
  body: /*#__PURE__*/_react.default.createElement(_react.Suspense, {
97
94
  fallback: /*#__PURE__*/_react.default.createElement(_StoreModalLoadingScreen.default, null)
98
95
  }, children)
99
- })));
96
+ }));
100
97
  };
101
98
  var _default = StoreModalContainer;
102
99
  exports.default = _default;
@@ -19,7 +19,7 @@ var _StoreModalReviewIdentity = _interopRequireDefault(require("./StoreModalRevi
19
19
  var _StoreModalReviewConfirm = _interopRequireDefault(require("../elements/StoreModalReviewConfirm"));
20
20
  var _StoreModalDownload = _interopRequireDefault(require("./StoreModalDownload"));
21
21
  var _StoreModalCheckoutContext = _interopRequireDefault(require("./StoreModalCheckoutContext"));
22
- var _CheckoutSteps = _interopRequireDefault(require("../Cart/CheckoutSteps"));
22
+ var _StripeProvider = _interopRequireDefault(require("../StripeProvider"));
23
23
  var _StoreModalReviewCompleteOrderMutation, _StoreModalReview_order, _StoreModalReview_viewer, _StoreModalReviewQuery;
24
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
25
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -34,77 +34,86 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
34
34
  // just paid for
35
35
  const submitCompleteMutation = _StoreModalReviewCompleteOrderMutation !== void 0 ? _StoreModalReviewCompleteOrderMutation : (_StoreModalReviewCompleteOrderMutation = require("../../__generated__/StoreModalReviewCompleteOrderMutation.graphql"), _StoreModalReviewCompleteOrderMutation.hash && _StoreModalReviewCompleteOrderMutation.hash !== "de20197df49deb030c473adbd9560e03" && console.error("The definition of 'StoreModalReviewCompleteOrderMutation' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _StoreModalReviewCompleteOrderMutation);
36
36
  const StoreModalReview = _ref => {
37
- var _order$stripePaymentI, _order$stripePaymentM, _order$orderItems, _viewer$settings$eula, _viewer$settings;
37
+ var _order$stripePaymentI, _order$orderItems, _viewer$settings$eula, _viewer$settings;
38
38
  let {
39
39
  viewer: viewerKey,
40
40
  order: orderKey
41
41
  } = _ref;
42
- const order = (0, _reactRelay.useFragment)(_StoreModalReview_order !== void 0 ? _StoreModalReview_order : (_StoreModalReview_order = require("../../__generated__/StoreModalReview_order.graphql"), _StoreModalReview_order.hash && _StoreModalReview_order.hash !== "c7fc7251b9f1cb7f33e0f7a436498492" && console.error("The definition of 'StoreModalReview_order' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _StoreModalReview_order), orderKey);
42
+ const order = (0, _reactRelay.useFragment)(_StoreModalReview_order !== void 0 ? _StoreModalReview_order : (_StoreModalReview_order = require("../../__generated__/StoreModalReview_order.graphql"), _StoreModalReview_order.hash && _StoreModalReview_order.hash !== "039b531ec1968e12d77dd23e0493a513" && console.error("The definition of 'StoreModalReview_order' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _StoreModalReview_order), orderKey);
43
43
  const viewer = (0, _reactRelay.useFragment)(_StoreModalReview_viewer !== void 0 ? _StoreModalReview_viewer : (_StoreModalReview_viewer = require("../../__generated__/StoreModalReview_viewer.graphql"), _StoreModalReview_viewer.hash && _StoreModalReview_viewer.hash !== "9136dd09437ff0102d8235b72b9b5c66" && console.error("The definition of 'StoreModalReview_viewer' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _StoreModalReview_viewer), viewerKey);
44
44
  const dispatch = (0, _reactRedux.useDispatch)();
45
45
  const [completing, setCompleting] = (0, _react.useState)(false);
46
46
  const [error, setError] = (0, _react.useState)(null);
47
47
  const {
48
- setCheckoutStep,
49
- setCheckoutError
48
+ setCheckoutStep
50
49
  } = (0, _react.useContext)(_StoreModalCheckoutContext.default);
51
50
  const {
52
51
  scrollToTop
53
52
  } = (0, _react.useContext)(_StoreModalContainerContext.default);
54
53
  const environment = (0, _reactRelay.useRelayEnvironment)();
55
54
  const stripe = (0, _reactStripeJs.useStripe)();
55
+ const elements = (0, _reactStripeJs.useElements)();
56
56
  if (!order) return null;
57
57
  if (order.completedWithCoupon || ((_order$stripePaymentI = order.stripePaymentIntent) === null || _order$stripePaymentI === void 0 ? void 0 : _order$stripePaymentI.status) === 'succeeded') {
58
58
  return /*#__PURE__*/_react.default.createElement(_StoreModalDownload.default, {
59
59
  order: order
60
60
  });
61
61
  }
62
+ const billingIdentity = order.billingIdentity;
62
63
  const handleSubmit = () => {
64
+ var _billingIdentity$stre, _billingIdentity$stre2, _billingIdentity$stre3, _billingIdentity$loca, _billingIdentity$admi, _billingIdentity$zip;
65
+ if (!stripe || !elements) return;
66
+ if (!billingIdentity) {
67
+ console.error('No billing identity, required for payment');
68
+ return;
69
+ }
63
70
  setCompleting(true);
64
71
  setError(null);
65
- (0, _relayRuntime.commitMutation)(environment, {
66
- mutation: submitCompleteMutation,
67
- variables: {},
68
- onCompleted: (response, errors) => {
69
- var _response$completeOrd, _response$completeOrd2, _response$completeOrd3, _response$completeOrd4;
70
- const requiresAction = (_response$completeOrd = response.completeOrder) === null || _response$completeOrd === void 0 ? void 0 : _response$completeOrd.requiresAction;
71
- const secret = (_response$completeOrd2 = response.completeOrder) === null || _response$completeOrd2 === void 0 ? void 0 : (_response$completeOrd3 = _response$completeOrd2.order) === null || _response$completeOrd3 === void 0 ? void 0 : (_response$completeOrd4 = _response$completeOrd3.stripePaymentIntent) === null || _response$completeOrd4 === void 0 ? void 0 : _response$completeOrd4.clientSecret;
72
- if (requiresAction === 'use_stripe_sdk' && secret) {
73
- stripe === null || stripe === void 0 ? void 0 : stripe.handleCardAction(secret).then(result => {
74
- if (result.error) {
75
- var _result$error$message;
76
- console.error(result.error);
77
- setCompleting(false);
78
- const error = (_result$error$message = result.error.message) !== null && _result$error$message !== void 0 ? _result$error$message : 'We were unable to complete your payment, please re-enter your card details any try again';
79
- setCheckoutError === null || setCheckoutError === void 0 ? void 0 : setCheckoutError(error);
80
- setCheckoutStep === null || setCheckoutStep === void 0 ? void 0 : setCheckoutStep(_CheckoutSteps.default.Payment);
81
- dispatch({
82
- type: 'STORE_MODAL_NAVIGATE',
83
- route: 'checkout'
84
- });
85
- } else {
86
- // re-confirm
87
- handleSubmit();
88
- }
89
- });
90
- return;
91
- }
92
- if (requiresAction === 'enter_new_payment_method') {
93
- setCompleting(false);
94
- setCheckoutError === null || setCheckoutError === void 0 ? void 0 : setCheckoutError('We were unable to complete your payment, please re-enter your card details any try again');
95
- setCheckoutStep === null || setCheckoutStep === void 0 ? void 0 : setCheckoutStep(_CheckoutSteps.default.Payment);
96
- dispatch({
97
- type: 'STORE_MODAL_NAVIGATE',
98
- route: 'checkout'
99
- });
100
- return;
72
+ if (order.canCompleteWithCoupon) {
73
+ (0, _relayRuntime.commitMutation)(environment, {
74
+ mutation: submitCompleteMutation,
75
+ variables: {},
76
+ onCompleted: (_response, errors) => {
77
+ if (errors && errors.length > 0) {
78
+ setCompleting(false);
79
+ setError(errors[0].message);
80
+ scrollToTop === null || scrollToTop === void 0 ? void 0 : scrollToTop();
81
+ return;
82
+ }
83
+
84
+ // TODO: test this
85
+
86
+ window.location.href = order.completeUrl;
101
87
  }
102
- if (errors && errors.length > 0) {
103
- setCompleting(false);
104
- setError(errors[0].message);
105
- scrollToTop === null || scrollToTop === void 0 ? void 0 : scrollToTop();
88
+ });
89
+ return;
90
+ }
91
+ stripe === null || stripe === void 0 ? void 0 : stripe.confirmPayment({
92
+ elements,
93
+ confirmParams: {
94
+ return_url: order.completeUrl,
95
+ payment_method_data: {
96
+ billing_details: {
97
+ email: billingIdentity.email,
98
+ name: billingIdentity.name,
99
+ address: {
100
+ line1: (_billingIdentity$stre = billingIdentity.street) === null || _billingIdentity$stre === void 0 ? void 0 : _billingIdentity$stre.split(/\n/)[0],
101
+ line2: (_billingIdentity$stre2 = (_billingIdentity$stre3 = billingIdentity.street) === null || _billingIdentity$stre3 === void 0 ? void 0 : _billingIdentity$stre3.split(/\n/)[1]) !== null && _billingIdentity$stre2 !== void 0 ? _billingIdentity$stre2 : '',
102
+ city: (_billingIdentity$loca = billingIdentity.locality) !== null && _billingIdentity$loca !== void 0 ? _billingIdentity$loca : '',
103
+ state: (_billingIdentity$admi = billingIdentity.administrativeArea) !== null && _billingIdentity$admi !== void 0 ? _billingIdentity$admi : '',
104
+ country: billingIdentity.country,
105
+ postal_code: (_billingIdentity$zip = billingIdentity.zip) !== null && _billingIdentity$zip !== void 0 ? _billingIdentity$zip : undefined
106
+ }
107
+ }
106
108
  }
107
109
  }
110
+ }).then(result => {
111
+ if ('error' in result) {
112
+ setCompleting(false);
113
+ }
114
+ }).catch(error => {
115
+ console.log(error);
116
+ setCompleting(false);
108
117
  });
109
118
  };
110
119
  const handleClickSection = step => {
@@ -129,7 +138,15 @@ const StoreModalReview = _ref => {
129
138
  }) : order.licenseeIdentity && /*#__PURE__*/_react.default.createElement(_StoreModalReviewIdentity.default, {
130
139
  identity: order.licenseeIdentity
131
140
  }),
132
- payment: ((_order$stripePaymentM = order.stripePaymentMethod) === null || _order$stripePaymentM === void 0 ? void 0 : _order$stripePaymentM.card) && /*#__PURE__*/_react.default.createElement(_react.Fragment, null, order.stripePaymentMethod.card.brandFormatted, ' ', order.stripePaymentMethod.card.last4),
141
+ payment: /*#__PURE__*/_react.default.createElement(_reactStripeJs.PaymentElement, {
142
+ options: {
143
+ fields: {
144
+ billingDetails: {
145
+ address: 'never'
146
+ }
147
+ }
148
+ }
149
+ }),
133
150
  items: (_order$orderItems = order.orderItems) === null || _order$orderItems === void 0 ? void 0 : _order$orderItems.map(item => /*#__PURE__*/_react.default.createElement(_StoreModalReviewItem.default, {
134
151
  key: item.id
135
152
  }, {
@@ -144,7 +161,8 @@ const StoreModalReview = _ref => {
144
161
  }),
145
162
  confirm: /*#__PURE__*/_react.default.createElement(_StoreModalReviewConfirm.default, {
146
163
  onSubmit: handleSubmit,
147
- submitting: completing
164
+ submitting: completing,
165
+ disabled: !stripe || !elements
148
166
  }, {
149
167
  eulaText: /*#__PURE__*/_react.default.createElement("div", {
150
168
  dangerouslySetInnerHTML: {
@@ -160,11 +178,13 @@ const StoreModalReviewQueryContainer = _ref2 => {
160
178
  let {
161
179
  prepared
162
180
  } = _ref2;
163
- const data = (0, _reactRelay.usePreloadedQuery)(_StoreModalReviewQuery !== void 0 ? _StoreModalReviewQuery : (_StoreModalReviewQuery = require("../../__generated__/StoreModalReviewQuery.graphql"), _StoreModalReviewQuery.hash && _StoreModalReviewQuery.hash !== "41e195913e09a2e7e2320c97d36faa7c" && console.error("The definition of 'StoreModalReviewQuery' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _StoreModalReviewQuery), prepared.reviewQuery);
164
- return /*#__PURE__*/_react.default.createElement(StoreModalReview, {
181
+ const data = (0, _reactRelay.usePreloadedQuery)(_StoreModalReviewQuery !== void 0 ? _StoreModalReviewQuery : (_StoreModalReviewQuery = require("../../__generated__/StoreModalReviewQuery.graphql"), _StoreModalReviewQuery.hash && _StoreModalReviewQuery.hash !== "e0aed024d4a8ba04c42e455e63e8c373" && console.error("The definition of 'StoreModalReviewQuery' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _StoreModalReviewQuery), prepared.reviewQuery);
182
+ return /*#__PURE__*/_react.default.createElement(_StripeProvider.default, {
183
+ viewer: data.viewer
184
+ }, /*#__PURE__*/_react.default.createElement(StoreModalReview, {
165
185
  viewer: data.viewer,
166
186
  order: data.viewer.currentOrder
167
- });
187
+ }));
168
188
  };
169
189
  var _default = StoreModalReviewQueryContainer;
170
190
  exports.default = _default;
@@ -3,6 +3,7 @@ import { StripeProvider_viewer$key } from '../../__generated__/StripeProvider_vi
3
3
  interface StripeProvider_props {
4
4
  viewer: StripeProvider_viewer$key;
5
5
  children: JSX.Element;
6
+ requireClientSecret?: boolean;
6
7
  }
7
- declare const StripeProvider: ({ viewer, children }: StripeProvider_props) => JSX.Element;
8
+ declare const StripeProvider: ({ viewer, children, requireClientSecret, }: StripeProvider_props) => JSX.Element;
8
9
  export default StripeProvider;
@@ -12,21 +12,31 @@ var _StripeProvider_viewer;
12
12
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
13
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
14
14
  const StripeProvider = _ref => {
15
- var _data$stripeCredentia, _data$settings;
15
+ var _data$stripeCredentia, _data$settings, _data$currentOrder$st, _data$currentOrder, _data$currentOrder$st2;
16
16
  let {
17
17
  viewer,
18
- children
18
+ children,
19
+ requireClientSecret = true
19
20
  } = _ref;
20
- const data = (0, _reactRelay.useFragment)(_StripeProvider_viewer !== void 0 ? _StripeProvider_viewer : (_StripeProvider_viewer = require("../../__generated__/StripeProvider_viewer.graphql"), _StripeProvider_viewer.hash && _StripeProvider_viewer.hash !== "700906fdf30c6e4aefcb6eb2b1a7eed5" && console.error("The definition of 'StripeProvider_viewer' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _StripeProvider_viewer), viewer);
21
+ const data = (0, _reactRelay.useFragment)(_StripeProvider_viewer !== void 0 ? _StripeProvider_viewer : (_StripeProvider_viewer = require("../../__generated__/StripeProvider_viewer.graphql"), _StripeProvider_viewer.hash && _StripeProvider_viewer.hash !== "109e9cbd38d24e7517934f5f1e734339" && console.error("The definition of 'StripeProvider_viewer' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _StripeProvider_viewer), viewer);
21
22
  const stripeKey = (_data$stripeCredentia = data.stripeCredentials) === null || _data$stripeCredentia === void 0 ? void 0 : _data$stripeCredentia.stripePublishableKey;
22
23
  const stripePromiseRef = (0, _react.useRef)(stripeKey ? (0, _stripeJs.loadStripe)(stripeKey) : null);
23
24
  const cssSrc = (_data$settings = data.settings) === null || _data$settings === void 0 ? void 0 : _data$settings.uiFontUrl;
25
+ const clientSecret = (_data$currentOrder$st = (_data$currentOrder = data.currentOrder) === null || _data$currentOrder === void 0 ? void 0 : (_data$currentOrder$st2 = _data$currentOrder.stripePaymentIntent) === null || _data$currentOrder$st2 === void 0 ? void 0 : _data$currentOrder$st2.clientSecret) !== null && _data$currentOrder$st !== void 0 ? _data$currentOrder$st : undefined;
26
+ if (requireClientSecret && !clientSecret) return children;
24
27
  return /*#__PURE__*/_react.default.createElement(_reactStripeJs.Elements, {
25
28
  stripe: stripePromiseRef.current,
26
29
  options: {
30
+ appearance: {
31
+ theme: 'flat',
32
+ variables: {
33
+ borderRadius: '0'
34
+ }
35
+ },
27
36
  fonts: cssSrc ? [{
28
37
  cssSrc
29
- }] : undefined
38
+ }] : undefined,
39
+ clientSecret
30
40
  }
31
41
  }, children);
32
42
  };
@@ -6,6 +6,7 @@ interface StoreModalReviewConfirm_props {
6
6
  };
7
7
  onSubmit: () => void;
8
8
  submitting: boolean;
9
+ disabled: boolean;
9
10
  }
10
11
  declare const StoreModalReviewConfirm: React.FunctionComponent<StoreModalReviewConfirm_props>;
11
12
  export default StoreModalReviewConfirm;
@@ -18,7 +18,8 @@ const StoreModalReviewConfirm = _ref => {
18
18
  submitText
19
19
  },
20
20
  onSubmit,
21
- submitting
21
+ submitting,
22
+ disabled
22
23
  } = _ref;
23
24
  const [acceptedEULA, setAcceptedEULA] = (0, _react.useState)(false);
24
25
  const {
@@ -40,7 +41,7 @@ const StoreModalReviewConfirm = _ref => {
40
41
  }, config.checkboxStyle === 'check' ? /*#__PURE__*/_react.default.createElement(_Icons.Check, null) : /*#__PURE__*/_react.default.createElement(_Icons.X, null))), /*#__PURE__*/_react.default.createElement("label", {
41
42
  htmlFor: "eula-agreement"
42
43
  }, eulaText)), /*#__PURE__*/_react.default.createElement(_Button.default, {
43
- disabled: !acceptedEULA || submitting,
44
+ disabled: disabled || !acceptedEULA || submitting,
44
45
  className: "store-modal__review-confirm__button",
45
46
  onClick: onSubmit
46
47
  }, submitText));
@@ -44,9 +44,7 @@ const StoreModalReviewLayout = _ref => {
44
44
  }, /*#__PURE__*/_react.default.createElement("h2", {
45
45
  className: "store-modal__review__heading"
46
46
  }, "Licensee information"), /*#__PURE__*/_react.default.createElement("div", null, licensee)), /*#__PURE__*/_react.default.createElement("div", {
47
- className: "store-modal__review__section store-modal__review__section--button",
48
- tabIndex: 0,
49
- onClick: () => onClickSection(_CheckoutSteps.default.Payment)
47
+ className: "store-modal__review__section"
50
48
  }, /*#__PURE__*/_react.default.createElement("h2", {
51
49
  className: "store-modal__review__heading"
52
50
  }, "Payment information"), /*#__PURE__*/_react.default.createElement("div", null, payment)), /*#__PURE__*/_react.default.createElement("div", {
@@ -1,6 +1,7 @@
1
1
  import { Environment } from 'react-relay';
2
2
  interface CreateRelayEnvironmentOptions {
3
3
  url?: string;
4
+ stripeIntegration?: 'payment-element' | 'card-element';
4
5
  }
5
6
  declare const createRelayEnvironment: (options: CreateRelayEnvironmentOptions) => Environment;
6
7
  export default createRelayEnvironment;
@@ -11,7 +11,8 @@ const createRelayEnvironment = options => {
11
11
  return fetch(url, {
12
12
  method: 'POST',
13
13
  headers: {
14
- 'content-type': 'application/json'
14
+ 'content-type': 'application/json',
15
+ 'fontdue-stripe-integration': options.stripeIntegration || 'payment-element'
15
16
  },
16
17
  credentials: 'include',
17
18
  body: JSON.stringify({
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "fontdue-js",
3
- "version": "1.10.2",
3
+ "version": "1.11.0-alpha2",
4
4
  "main": "index.js",
5
5
  "scripts": {
6
- "build": "run-p relay build-js build-css build-ts-declarations",
6
+ "build": "npm run relay && run-p build-js build-css build-ts-declarations",
7
7
  "build-js": "babel src --out-dir dist --extensions .ts,.tsx,.js,.jsx",
8
8
  "build-ts-declarations": "tsc",
9
9
  "build-css": "sass --load-path=node_modules src/index.scss fontdue.css",