@depay/widgets 6.11.0 → 6.13.0

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.
package/dist/esm/index.js CHANGED
@@ -10,10 +10,10 @@ import { route } from '@depay/web3-exchanges';
10
10
  import { Token } from '@depay/web3-tokens';
11
11
  import { Currency } from '@depay/local-currency';
12
12
  import { setProviderEndpoints, request, provider } from '@depay/web3-client';
13
+ import { Blockchain } from '@depay/web3-blockchains';
13
14
  import { route as route$1 } from '@depay/web3-payments';
14
15
  import Slider from 'react-rangeslider';
15
16
  import { TokenImage } from '@depay/react-token-image';
16
- import { Blockchain } from '@depay/web3-blockchains';
17
17
 
18
18
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
19
19
  try {
@@ -1457,6 +1457,8 @@ class Dialog extends React.Component {
1457
1457
  constructor(props) {
1458
1458
  super(props);
1459
1459
 
1460
+ this.handler = this.onKeyDown.bind(this);
1461
+
1460
1462
  this.state = {
1461
1463
  open: true,
1462
1464
  };
@@ -1490,22 +1492,22 @@ class Dialog extends React.Component {
1490
1492
  this.setState({ open: true });
1491
1493
  }, 10);
1492
1494
  });
1493
- this.props.document.addEventListener('keydown', this.onKeyDown.bind(this), false);
1495
+ this.props.document.addEventListener('keydown', this.handler, true);
1494
1496
  }
1495
1497
 
1496
1498
  componentWillUnmount() {
1497
- this.props.document.addEventListener('keydown', this.onKeyDown.bind(this), false);
1499
+ this.props.document.removeEventListener('keydown', this.handler, true);
1498
1500
  }
1499
1501
 
1500
1502
  render() {
1501
1503
  const classNames = ['ReactDialog', this.state.open ? 'ReactDialogOpen' : ''];
1502
1504
  const style = ReactDialogStyle({ background: this.props.background });
1503
1505
  return (
1504
- React.createElement('div', { className: classNames.join(' '), __self: this, __source: {fileName: _jsxFileName, lineNumber: 54}}
1505
- , React.createElement('style', {__self: this, __source: {fileName: _jsxFileName, lineNumber: 55}}, style)
1506
- , React.createElement('div', { className: "ReactDialogRow", __self: this, __source: {fileName: _jsxFileName, lineNumber: 56}}
1507
- , React.createElement('div', { className: "ReactDialogCell", __self: this, __source: {fileName: _jsxFileName, lineNumber: 57}}
1508
- , React.createElement('div', { className: "ReactDialogBackground", onClick: this.onClickBackground.bind(this), __self: this, __source: {fileName: _jsxFileName, lineNumber: 58}} )
1506
+ React.createElement('div', { className: classNames.join(' '), __self: this, __source: {fileName: _jsxFileName, lineNumber: 56}}
1507
+ , React.createElement('style', {__self: this, __source: {fileName: _jsxFileName, lineNumber: 57}}, style)
1508
+ , React.createElement('div', { className: "ReactDialogRow", __self: this, __source: {fileName: _jsxFileName, lineNumber: 58}}
1509
+ , React.createElement('div', { className: "ReactDialogCell", __self: this, __source: {fileName: _jsxFileName, lineNumber: 59}}
1510
+ , React.createElement('div', { className: "ReactDialogBackground", onClick: this.onClickBackground.bind(this), __self: this, __source: {fileName: _jsxFileName, lineNumber: 60}} )
1509
1511
  , this.props.children
1510
1512
  )
1511
1513
  )
@@ -1682,7 +1684,7 @@ var CardStyle = (function (style) {
1682
1684
  });
1683
1685
 
1684
1686
  var DialogStyle = (function (style) {
1685
- return "\n\n .ReactDialogBackground {\n backdrop-filter: blur(5px);\n background: rgba(0,0,0,0.7);\n }\n\n .Dialog {\n margin: 0 auto;\n position: relative;\n width: 420px;\n box-shadow: 0 0 20px rgba(0,0,0,0.1);\n border-radius: 0.8rem;\n background: rgb(248,248,248);\n }\n\n @media screen and (max-width: 450px) {\n \n .Dialog, .ReactDialogAnimation {\n width: 100%;\n }\n\n }\n\n @media (orientation: portrait) and (max-width: 900px) {\n\n .Dialog {\n align-content: stretch;\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n\n .DialogBody {\n flex: 1;\n align-items: flex-end;\n }\n\n .DialogFooter {\n padding-bottom: 20px;\n }\n\n .ReactDialogStackCell {\n vertical-align: bottom;\n }\n\n .ReactDialogAnimation {\n bottom: -100px !important;\n top: inherit !important;\n transition: opacity 0.4s ease, bottom 0.4s ease;\n }\n\n .ReactDialog.ReactDialogOpen .ReactDialogAnimation {\n bottom: 0px !important;\n }\n\n .DialogFooter {\n border-bottom-left-radius: 0 !important;\n border-bottom-right-radius: 0 !important;\n }\n }\n\n .DialogBody {\n background: rgb(248,248,248);\n overflow-x: hidden;\n overflow-y: auto;\n }\n\n .DialogBody.ScrollHeight {\n height: 30vh !important;\n max-height: 30vh !important;\n }\n\n .DialogHeader {\n background: rgb(248,248,248);\n border-top-left-radius: 0.8rem;\n border-top-right-radius: 0.8rem;\n min-height: 3.4rem;\n position: relative;\n width: 100%;\n }\n\n .DialogHeaderActionRight {\n position: absolute;\n top: 0;\n right: 0;\n height: 3rem;\n }\n\n .DialogHeaderActionLeft {\n position: absolute;\n top: 0;\n left: 0;\n height: 3rem;\n }\n\n .DialogFooter {\n background: rgb(248,248,248);\n border-bottom-left-radius: 0.8rem;\n border-bottom-right-radius: 0.8rem;\n line-height: 1.5rem;\n min-height: 2rem;\n position: relative;\n text-align: center;\n }\n\n .ReactShadowDOMInsideContainer > .ReactDialog {\n display: table;\n }\n\n ";
1687
+ return "\n\n .ReactDialogBackground {\n backdrop-filter: blur(5px);\n background: rgba(0,0,0,0.7);\n }\n\n .Dialog {\n margin: 0 auto;\n position: relative;\n width: 420px;\n box-shadow: 0 0 20px rgba(0,0,0,0.1);\n border-radius: 0.8rem;\n background: rgb(248,248,248);\n }\n\n @media screen and (max-width: 450px) {\n \n .Dialog, .ReactDialogAnimation {\n width: 100%;\n }\n\n }\n\n @media (orientation: portrait) and (max-width: 900px) {\n\n .Dialog {\n align-content: stretch;\n display: flex;\n flex-direction: column;\n }\n\n .ReactDialogCell {\n vertical-align: bottom;\n }\n\n .DialogBody {\n flex: 1;\n align-items: flex-end;\n }\n\n .DialogFooter {\n padding-bottom: 20px;\n }\n\n .ReactDialogStackCell {\n vertical-align: bottom;\n }\n\n .ReactDialogAnimation {\n bottom: -100px !important;\n top: inherit !important;\n transition: opacity 0.4s ease, bottom 0.4s ease;\n }\n\n .ReactDialog.ReactDialogOpen .ReactDialogAnimation {\n bottom: 0px !important;\n }\n\n .DialogFooter {\n border-bottom-left-radius: 0 !important;\n border-bottom-right-radius: 0 !important;\n }\n }\n\n .DialogBody {\n background: rgb(248,248,248);\n overflow-x: hidden;\n overflow-y: auto;\n }\n\n .DialogBody.ScrollHeight {\n height: 30vh !important;\n max-height: 30vh !important;\n }\n\n .DialogHeader {\n background: rgb(248,248,248);\n border-top-left-radius: 0.8rem;\n border-top-right-radius: 0.8rem;\n min-height: 3.4rem;\n position: relative;\n width: 100%;\n }\n\n .DialogHeaderActionRight {\n position: absolute;\n top: 0;\n right: 0;\n height: 3rem;\n }\n\n .DialogHeaderActionLeft {\n position: absolute;\n top: 0;\n left: 0;\n height: 3rem;\n }\n\n .DialogFooter {\n background: rgb(248,248,248);\n border-bottom-left-radius: 0.8rem;\n border-bottom-right-radius: 0.8rem;\n line-height: 1.5rem;\n min-height: 2rem;\n position: relative;\n text-align: center;\n }\n\n .ReactShadowDOMInsideContainer > .ReactDialog {\n display: table;\n }\n\n ";
1686
1688
  });
1687
1689
 
1688
1690
  var FontStyle = (function (style) {
@@ -2004,7 +2006,7 @@ var round = (function (input) {
2004
2006
  focusToFixed = parseFloat(_float).toFixed(1).replace('.', '');
2005
2007
  }
2006
2008
 
2007
- if (focusToFixed.toString()[0] != 0 && focusToFixed.toString().length > 2) {
2009
+ if (focusToFixed.toString()[0] != "0" && focusToFixed.toString().length > 2) {
2008
2010
  return parseInt(inputAsFloat.toFixed(0));
2009
2011
  } else {
2010
2012
  return parseFloat(digitsAfterDecimal.replace(/\d{3}$/, focusToFixed));
@@ -2023,16 +2025,17 @@ var ChangableAmountProvider = (function (props) {
2023
2025
  });
2024
2026
  };
2025
2027
 
2026
- var _useState = useState(configurationsMissAmounts(props.accept)),
2028
+ var _useContext = useContext(ConfigurationContext),
2029
+ amountConfiguration = _useContext.amount,
2030
+ recover = _useContext.recover;
2031
+
2032
+ var _useState = useState(recover == undefined ? configurationsMissAmounts(props.accept) : false),
2027
2033
  _useState2 = _slicedToArray(_useState, 2),
2028
2034
  amountsMissing = _useState2[0],
2029
2035
  setAmountsMissing = _useState2[1];
2030
2036
 
2031
- var _useContext = useContext(WalletContext),
2032
- account = _useContext.account;
2033
-
2034
- var _useContext2 = useContext(ConfigurationContext),
2035
- amountConfiguration = _useContext2.amount;
2037
+ var _useContext2 = useContext(WalletContext),
2038
+ account = _useContext2.account;
2036
2039
 
2037
2040
  var _useContext3 = useContext(ConversionRateContext),
2038
2041
  conversionRate = _useContext3.conversionRate;
@@ -2061,8 +2064,12 @@ var ChangableAmountProvider = (function (props) {
2061
2064
  setMaxAmount = _useState10[1];
2062
2065
 
2063
2066
  useEffect(function () {
2067
+ if (recover) {
2068
+ return;
2069
+ }
2070
+
2064
2071
  setAmountsMissing(configurationsMissAmounts(props.accept));
2065
- }, [props.accept]);
2072
+ }, [props.accept, recover]);
2066
2073
 
2067
2074
  var getAmounts = function getAmounts() {
2068
2075
  return new Promise(function (resolve, reject) {
@@ -2098,6 +2105,10 @@ var ChangableAmountProvider = (function (props) {
2098
2105
  };
2099
2106
 
2100
2107
  useEffect(function () {
2108
+ if (recover) {
2109
+ return;
2110
+ }
2111
+
2101
2112
  if (amountsMissing && account && conversionRate) {
2102
2113
  getAmounts().then(function (amounts) {
2103
2114
  setAcceptWithAmount(props.accept.map(function (configuration, index) {
@@ -2116,7 +2127,7 @@ var ChangableAmountProvider = (function (props) {
2116
2127
  }));
2117
2128
  })["catch"](setError);
2118
2129
  }
2119
- }, [amountsMissing, account, conversionRate, amount]);
2130
+ }, [amountsMissing, account, conversionRate, amount, recover]);
2120
2131
  useEffect(function () {
2121
2132
  if (amountsMissing && maxRoute) {
2122
2133
  maxRoute.fromToken.readable(maxRoute.fromBalance).then(function (readableMaxAmount) {
@@ -2230,6 +2241,8 @@ var ConversionRateProvider = (function (props) {
2230
2241
 
2231
2242
  var DonationRoutingContext = /*#__PURE__*/React.createContext();
2232
2243
 
2244
+ var NavigateContext = /*#__PURE__*/React.createContext();
2245
+
2233
2246
  var QuestionsGraphic = "data:image/png;base64,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";
2234
2247
 
2235
2248
  var NoPaymentMethodFoundDialog = (function () {
@@ -2265,7 +2278,9 @@ var PaymentContext = /*#__PURE__*/React.createContext();
2265
2278
 
2266
2279
  var PaymentRoutingContext = /*#__PURE__*/React.createContext();
2267
2280
 
2268
- var TrackingContext = /*#__PURE__*/React.createContext();
2281
+ var PaymentTrackingContext = /*#__PURE__*/React.createContext();
2282
+
2283
+ var TransactionTrackingContext = /*#__PURE__*/React.createContext();
2269
2284
 
2270
2285
  var PaymentProvider = (function (props) {
2271
2286
  var _useContext = useContext(ErrorContext),
@@ -2273,11 +2288,13 @@ var PaymentProvider = (function (props) {
2273
2288
 
2274
2289
  var _useContext2 = useContext(ConfigurationContext),
2275
2290
  _sent = _useContext2.sent,
2276
- _confirmed = _useContext2.confirmed,
2277
- _failed = _useContext2.failed;
2291
+ confirmed = _useContext2.confirmed,
2292
+ failed = _useContext2.failed,
2293
+ recover = _useContext2.recover;
2278
2294
 
2279
2295
  var _useContext3 = useContext(PaymentRoutingContext),
2280
- selectedRoute = _useContext3.selectedRoute;
2296
+ selectedRoute = _useContext3.selectedRoute,
2297
+ getPaymentRoutes = _useContext3.getPaymentRoutes;
2281
2298
 
2282
2299
  var _useContext4 = useContext(ClosableContext),
2283
2300
  open = _useContext4.open,
@@ -2290,13 +2307,20 @@ var PaymentProvider = (function (props) {
2290
2307
  var _useContext6 = useContext(UpdatableContext),
2291
2308
  setUpdatable = _useContext6.setUpdatable;
2292
2309
 
2293
- var _useContext7 = useContext(WalletContext),
2294
- wallet = _useContext7.wallet;
2310
+ var _useContext7 = useContext(NavigateContext),
2311
+ navigate = _useContext7.navigate;
2312
+
2313
+ var _useContext8 = useContext(WalletContext),
2314
+ wallet = _useContext8.wallet;
2315
+
2316
+ var _useContext9 = useContext(PaymentTrackingContext),
2317
+ release = _useContext9.release,
2318
+ tracking = _useContext9.tracking,
2319
+ initializeTracking = _useContext9.initializeTracking;
2295
2320
 
2296
- var _useContext8 = useContext(TrackingContext),
2297
- release = _useContext8.release,
2298
- tracking = _useContext8.tracking,
2299
- initializeTracking = _useContext8.initializeTracking;
2321
+ var _useContext10 = useContext(TransactionTrackingContext),
2322
+ foundTransaction = _useContext10.foundTransaction,
2323
+ initializeTransactionTracking = _useContext10.initializeTracking;
2300
2324
 
2301
2325
  var _useState = useState(),
2302
2326
  _useState2 = _slicedToArray(_useState, 2),
@@ -2318,52 +2342,59 @@ var PaymentProvider = (function (props) {
2318
2342
  paymentState = _useState8[0],
2319
2343
  setPaymentState = _useState8[1];
2320
2344
 
2345
+ var paymentConfirmed = function paymentConfirmed(transaction) {
2346
+ if (tracking != true) {
2347
+ setClosable(true);
2348
+ }
2349
+
2350
+ setPaymentState('confirmed');
2351
+
2352
+ if (confirmed) {
2353
+ confirmed(transaction);
2354
+ }
2355
+ };
2356
+
2357
+ var paymentFailed = function paymentFailed(transaction, error) {
2358
+ if (failed) {
2359
+ failed(transaction, error);
2360
+ }
2361
+
2362
+ setPaymentState('initialized');
2363
+ setPayment(null);
2364
+ setClosable(true);
2365
+ setUpdatable(true);
2366
+ getPaymentRoutes({});
2367
+ navigate('PaymentError');
2368
+ };
2369
+
2321
2370
  var pay = /*#__PURE__*/function () {
2322
- var _ref2 = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee(_ref) {
2323
- var navigate, currentBlock;
2371
+ var _ref = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee() {
2372
+ var currentBlock;
2324
2373
  return regenerator.wrap(function _callee$(_context) {
2325
2374
  while (1) {
2326
2375
  switch (_context.prev = _context.next) {
2327
2376
  case 0:
2328
- navigate = _ref.navigate;
2329
2377
  setClosable(false);
2330
2378
  setPaymentState('paying');
2331
2379
  setUpdatable(false);
2332
- _context.next = 6;
2380
+ _context.next = 5;
2333
2381
  return request({
2334
2382
  blockchain: payment.route.transaction.blockchain,
2335
2383
  method: 'latestBlockNumber'
2336
2384
  });
2337
2385
 
2338
- case 6:
2386
+ case 5:
2339
2387
  currentBlock = _context.sent;
2340
2388
  wallet.sendTransaction(Object.assign({}, payment.route.transaction, {
2341
2389
  sent: function sent(transaction) {
2390
+ initializeTransactionTracking(transaction, currentBlock);
2391
+
2342
2392
  if (_sent) {
2343
2393
  _sent(transaction);
2344
2394
  }
2345
2395
  },
2346
- confirmed: function confirmed(transaction) {
2347
- if (tracking != true) {
2348
- setClosable(true);
2349
- }
2350
-
2351
- setPaymentState('confirmed');
2352
-
2353
- if (_confirmed) {
2354
- _confirmed(transaction);
2355
- }
2356
- },
2357
- failed: function failed(transaction, error) {
2358
- if (_failed) {
2359
- _failed(transaction, error);
2360
- }
2361
-
2362
- setPaymentState('initialized');
2363
- setClosable(true);
2364
- setUpdatable(true);
2365
- navigate('PaymentError');
2366
- }
2396
+ confirmed: paymentConfirmed,
2397
+ failed: paymentFailed
2367
2398
  })).then(function (sentTransaction) {
2368
2399
  if (tracking) {
2369
2400
  initializeTracking(sentTransaction, currentBlock, payment.route);
@@ -2381,7 +2412,7 @@ var PaymentProvider = (function (props) {
2381
2412
  }
2382
2413
  });
2383
2414
 
2384
- case 8:
2415
+ case 7:
2385
2416
  case "end":
2386
2417
  return _context.stop();
2387
2418
  }
@@ -2389,8 +2420,8 @@ var PaymentProvider = (function (props) {
2389
2420
  }, _callee);
2390
2421
  }));
2391
2422
 
2392
- return function pay(_x) {
2393
- return _ref2.apply(this, arguments);
2423
+ return function pay() {
2424
+ return _ref.apply(this, arguments);
2394
2425
  };
2395
2426
  }();
2396
2427
 
@@ -2418,19 +2449,73 @@ var PaymentProvider = (function (props) {
2418
2449
  setPaymentState('confirmed');
2419
2450
  }
2420
2451
  }, [release]);
2452
+ useEffect(function () {
2453
+ if (recover) {
2454
+ setClosable(false);
2455
+ setUpdatable(false);
2456
+ setPaymentState('paying');
2457
+ setTransaction({
2458
+ blockchain: recover.blockchain,
2459
+ id: recover.transaction,
2460
+ url: Blockchain.findByName(recover.blockchain).explorerUrlFor({
2461
+ transaction: {
2462
+ id: recover.transaction
2463
+ }
2464
+ })
2465
+ });
2466
+ var paymentToken = new Token({
2467
+ blockchain: recover.blockchain,
2468
+ address: recover.token
2469
+ });
2470
+ Promise.all([paymentToken.name(), paymentToken.symbol()]).then(function (_ref2) {
2471
+ var _ref3 = _slicedToArray(_ref2, 2),
2472
+ name = _ref3[0],
2473
+ symbol = _ref3[1];
2474
+
2475
+ setPayment({
2476
+ blockchain: recover.blockchain,
2477
+ token: recover.token,
2478
+ name: name,
2479
+ symbol: symbol.toUpperCase(),
2480
+ amount: recover.amount
2481
+ });
2482
+ })["catch"](setError);
2483
+ }
2484
+ }, [recover]);
2485
+ useEffect(function () {
2486
+ if (foundTransaction && foundTransaction.id && foundTransaction.status) {
2487
+ var newTransaction;
2488
+
2489
+ if (foundTransaction.id.toLowerCase() != transaction.id.toLowerCase()) {
2490
+ newTransaction = Object.assign({}, transaction, {
2491
+ id: foundTransaction.id,
2492
+ url: Blockchain.findByName(transaction.blockchain).explorerUrlFor({
2493
+ transaction: foundTransaction
2494
+ })
2495
+ });
2496
+ setTransaction(newTransaction);
2497
+ }
2498
+
2499
+ if (foundTransaction.status == 'success') {
2500
+ paymentConfirmed(newTransaction || transaction);
2501
+ } else if (foundTransaction.status == 'failed') {
2502
+ paymentFailed(newTransaction || transaction);
2503
+ }
2504
+ }
2505
+ }, [foundTransaction, transaction]);
2421
2506
  useEffect(function () {
2422
2507
  if (selectedRoute) {
2423
2508
  var fromToken = selectedRoute.fromToken;
2424
- selectedRoute.transaction.params;
2425
- Promise.all([fromToken.name(), fromToken.symbol(), fromToken.readable(selectedRoute.fromAmount)]).then(function (_ref3) {
2426
- var _ref4 = _slicedToArray(_ref3, 3),
2427
- name = _ref4[0],
2428
- symbol = _ref4[1],
2429
- amount = _ref4[2];
2509
+ Promise.all([fromToken.name(), fromToken.symbol(), fromToken.readable(selectedRoute.fromAmount)]).then(function (_ref4) {
2510
+ var _ref5 = _slicedToArray(_ref4, 3),
2511
+ name = _ref5[0],
2512
+ symbol = _ref5[1],
2513
+ amount = _ref5[2];
2430
2514
 
2431
2515
  setPayment({
2516
+ blockchain: selectedRoute.blockchain,
2432
2517
  route: selectedRoute,
2433
- token: selectedRoute.fromToken.address,
2518
+ token: fromToken.address,
2434
2519
  name: name,
2435
2520
  symbol: symbol.toUpperCase(),
2436
2521
  amount: amount
@@ -2513,6 +2598,9 @@ var PaymentRoutingProvider = (function (props) {
2513
2598
  var _useContext2 = useContext(UpdatableContext),
2514
2599
  updatable = _useContext2.updatable;
2515
2600
 
2601
+ var _useContext3 = useContext(ConfigurationContext),
2602
+ recover = _useContext3.recover;
2603
+
2516
2604
  var prepareAcceptedPayments = function prepareAcceptedPayments(accept) {
2517
2605
  var toAddress = _typeof(accept.receiver) == 'object' ? accept.receiver.address : accept.receiver;
2518
2606
  var toContract = _typeof(accept.receiver) == 'object' ? accept.receiver : undefined;
@@ -2640,7 +2728,7 @@ var PaymentRoutingProvider = (function (props) {
2640
2728
  };
2641
2729
  }, [reloadCount, allRoutes, selectedRoute, updatable]);
2642
2730
  useEffect(function () {
2643
- if (account && props.accept) {
2731
+ if (account && props.accept && recover == undefined) {
2644
2732
  setAllRoutes(undefined);
2645
2733
  setSelectedRoute(undefined);
2646
2734
  getPaymentRoutes({});
@@ -2653,6 +2741,7 @@ var PaymentRoutingProvider = (function (props) {
2653
2741
  value: {
2654
2742
  selectedRoute: selectedRoute,
2655
2743
  setSelectedRoute: setSelectedRoute,
2744
+ getPaymentRoutes: getPaymentRoutes,
2656
2745
  allRoutes: allRoutes,
2657
2746
  setAllRoutes: setAllRoutes
2658
2747
  }
@@ -2778,7 +2867,7 @@ var DonationRoutingProvider = (function (props) {
2778
2867
  });
2779
2868
 
2780
2869
  var format = (function (input) {
2781
- var _float = parseFloat(input);
2870
+ var _float = round(input);
2782
2871
 
2783
2872
  var floatToString = _float.toString();
2784
2873
 
@@ -3171,7 +3260,7 @@ var Footer = (function () {
3171
3260
  amount = _useContext2.amount;
3172
3261
  _useContext2.amountsMissing;
3173
3262
 
3174
- var _useContext3 = useContext(TrackingContext),
3263
+ var _useContext3 = useContext(PaymentTrackingContext),
3175
3264
  tracking = _useContext3.tracking,
3176
3265
  release = _useContext3.release,
3177
3266
  forwardTo = _useContext3.forwardTo,
@@ -3188,8 +3277,8 @@ var Footer = (function () {
3188
3277
  var _useContext5 = useContext(PaymentValueContext),
3189
3278
  paymentValue = _useContext5.paymentValue;
3190
3279
 
3191
- var _useContext6 = useContext(NavigateStackContext),
3192
- navigate = _useContext6.navigate;
3280
+ var _useContext6 = useContext(NavigateStackContext);
3281
+ _useContext6.navigate;
3193
3282
 
3194
3283
  var _useContext7 = useContext(ClosableContext),
3195
3284
  close = _useContext7.close;
@@ -3295,7 +3384,7 @@ var Footer = (function () {
3295
3384
  };
3296
3385
 
3297
3386
  var approvalButton = function approvalButton() {
3298
- if (!payment.route.approvalRequired || payment.route.directTransfer) {
3387
+ if (payment.route == undefined || !payment.route.approvalRequired || payment.route.directTransfer) {
3299
3388
  return null;
3300
3389
  } else if (paymentState == 'initialized') {
3301
3390
  return /*#__PURE__*/React.createElement("div", {
@@ -3332,7 +3421,7 @@ var Footer = (function () {
3332
3421
  displayedAmount = "".concat(payment.symbol, " ").concat(payment.amount);
3333
3422
  }
3334
3423
 
3335
- if (paymentState == 'initialized' || paymentState == 'approving') {
3424
+ if ((paymentState == 'initialized' || paymentState == 'approving') && payment.route) {
3336
3425
  return /*#__PURE__*/React.createElement("button", {
3337
3426
  className: ["ButtonPrimary", payment.route.approvalRequired && !payment.route.directTransfer ? 'disabled' : ''].join(' '),
3338
3427
  onClick: function onClick() {
@@ -3340,9 +3429,7 @@ var Footer = (function () {
3340
3429
  return;
3341
3430
  }
3342
3431
 
3343
- pay({
3344
- navigate: navigate
3345
- });
3432
+ pay();
3346
3433
  }
3347
3434
  }, "Pay ", displayedAmount);
3348
3435
  } else if (paymentState == 'paying') {
@@ -3483,8 +3570,11 @@ var PaymentErrorDialog = (function () {
3483
3570
  var _useContext2 = useContext(PaymentContext),
3484
3571
  transaction = _useContext2.transaction;
3485
3572
 
3573
+ var _useContext3 = useContext(ConfigurationContext),
3574
+ recover = _useContext3.recover;
3575
+
3486
3576
  return /*#__PURE__*/React.createElement(Dialog$1, {
3487
- stacked: true,
3577
+ stacked: recover ? false : true,
3488
3578
  header: /*#__PURE__*/React.createElement("div", {
3489
3579
  className: "PaddingTopS PaddingLeftM PaddingRightM"
3490
3580
  }),
@@ -3497,7 +3587,7 @@ var PaymentErrorDialog = (function () {
3497
3587
  className: "LineHeightL Text FontSizeL PaddingTopS FontWeightBold"
3498
3588
  }, "Payment Failed"), /*#__PURE__*/React.createElement("div", {
3499
3589
  className: "Text PaddingTopS PaddingBottomS PaddingLeftS PaddingRightS"
3500
- }, /*#__PURE__*/React.createElement("strong", {
3590
+ }, recover == undefined && /*#__PURE__*/React.createElement("strong", {
3501
3591
  className: "FontSizeM"
3502
3592
  }, "Unfortunately executing your payment failed. You can go back and try again."), transaction && /*#__PURE__*/React.createElement("div", {
3503
3593
  className: "PaddingTopS"
@@ -3510,7 +3600,7 @@ var PaymentErrorDialog = (function () {
3510
3600
  }, "View on explorer")))),
3511
3601
  footer: /*#__PURE__*/React.createElement("div", {
3512
3602
  className: "PaddingTopXS PaddingRightM PaddingLeftM PaddingBottomM"
3513
- }, /*#__PURE__*/React.createElement("button", {
3603
+ }, recover == undefined && /*#__PURE__*/React.createElement("button", {
3514
3604
  className: "ButtonPrimary",
3515
3605
  onClick: function onClick() {
3516
3606
  return navigate('back');
@@ -3566,7 +3656,11 @@ var DonationStack = (function (props) {
3566
3656
  open = _useContext.open,
3567
3657
  close = _useContext.close;
3568
3658
 
3659
+ var _useContext2 = useContext(NavigateContext),
3660
+ setNavigate = _useContext2.setNavigate;
3661
+
3569
3662
  return /*#__PURE__*/React.createElement(ReactDialogStack, {
3663
+ setNavigate: setNavigate,
3570
3664
  open: open,
3571
3665
  close: close,
3572
3666
  start: "DonationOverview",
@@ -3582,7 +3676,28 @@ var DonationStack = (function (props) {
3582
3676
  });
3583
3677
  });
3584
3678
 
3585
- var TrackingProvider = (function (props) {
3679
+ var NavigateProvider = (function (props) {
3680
+ var navigator;
3681
+
3682
+ var setNavigate = function setNavigate(_navigator) {
3683
+ navigator = _navigator;
3684
+ };
3685
+
3686
+ var navigate = function navigate(dialog) {
3687
+ if (navigator) {
3688
+ navigator(dialog);
3689
+ }
3690
+ };
3691
+
3692
+ return /*#__PURE__*/React.createElement(NavigateContext.Provider, {
3693
+ value: {
3694
+ navigate: navigate,
3695
+ setNavigate: setNavigate
3696
+ }
3697
+ }, props.children);
3698
+ });
3699
+
3700
+ var PaymentTrackingProvider = (function (props) {
3586
3701
  var _useContext = useContext(ErrorContext),
3587
3702
  errorCallback = _useContext.errorCallback;
3588
3703
 
@@ -3676,14 +3791,14 @@ var TrackingProvider = (function (props) {
3676
3791
 
3677
3792
  var retryStartTracking = function retryStartTracking(transaction, afterBlock, paymentRoute, attempt) {
3678
3793
  attempt = parseInt(attempt || 1, 10);
3679
- console.log('RETRY TRACKING ATTEMPT ', attempt);
3794
+ console.log('RETRYING PAYMENT TRACKING ATTEMPT ', attempt);
3680
3795
 
3681
3796
  if (attempt < 3) {
3682
3797
  setTimeout(function () {
3683
3798
  startTracking(transaction, afterBlock, paymentRoute, attempt + 1);
3684
3799
  }, 3000);
3685
3800
  } else {
3686
- console.log('TRACKING FAILED AFTER 3 ATTEMPTS!');
3801
+ console.log('PAYMENT TRACKING FAILED AFTER 3 ATTEMPTS!');
3687
3802
  setTrackingFailed(true);
3688
3803
 
3689
3804
  if (typeof errorCallback == 'function') {
@@ -3698,6 +3813,9 @@ var TrackingProvider = (function (props) {
3698
3813
  if (track.endpoint) {
3699
3814
  return fetch(track.endpoint, {
3700
3815
  method: 'POST',
3816
+ headers: {
3817
+ 'Content-Type': 'application/json'
3818
+ },
3701
3819
  body: JSON.stringify(payment)
3702
3820
  });
3703
3821
  } else if (track.method) {
@@ -3717,12 +3835,12 @@ var TrackingProvider = (function (props) {
3717
3835
  to_token: paymentRoute.toToken.address
3718
3836
  }).then(function (response) {
3719
3837
  if (response.status == 200) {
3720
- console.log('TRACKING INITIALIZED');
3838
+ console.log('PAYMENT TRACKING INITIALIZED');
3721
3839
  } else {
3722
3840
  retryStartTracking(transaction, afterBlock, paymentRoute, attempt);
3723
3841
  }
3724
3842
  })["catch"](function (error) {
3725
- console.log('TRACKING FAILED', error);
3843
+ console.log('PAYMENT TRACKING FAILED', error);
3726
3844
  retryStartTracking(transaction, afterBlock, paymentRoute, attempt);
3727
3845
  });
3728
3846
  };
@@ -3759,6 +3877,9 @@ var TrackingProvider = (function (props) {
3759
3877
  if (track.poll.endpoint) {
3760
3878
  fetch(track.poll.endpoint, {
3761
3879
  method: 'POST',
3880
+ headers: {
3881
+ 'Content-Type': 'application/json'
3882
+ },
3762
3883
  body: JSON.stringify(payment)
3763
3884
  }).then(handleResponse);
3764
3885
  } else if (track.poll.method) {
@@ -3787,7 +3908,7 @@ var TrackingProvider = (function (props) {
3787
3908
  startTracking(transaction, afterBlock, paymentRoute);
3788
3909
  };
3789
3910
 
3790
- return /*#__PURE__*/React.createElement(TrackingContext.Provider, {
3911
+ return /*#__PURE__*/React.createElement(PaymentTrackingContext.Provider, {
3791
3912
  value: {
3792
3913
  tracking: tracking,
3793
3914
  initializeTracking: initializeTracking,
@@ -3798,6 +3919,154 @@ var TrackingProvider = (function (props) {
3798
3919
  }, props.children);
3799
3920
  });
3800
3921
 
3922
+ var TransactionTrackingProvider = (function (props) {
3923
+ var _useState = useState(),
3924
+ _useState2 = _slicedToArray(_useState, 2),
3925
+ givenTransaction = _useState2[0],
3926
+ setGivenTransaction = _useState2[1];
3927
+
3928
+ var _useState3 = useState(),
3929
+ _useState4 = _slicedToArray(_useState3, 2),
3930
+ foundTransaction = _useState4[0],
3931
+ setFoundTransaction = _useState4[1];
3932
+
3933
+ var _useState5 = useState(false),
3934
+ _useState6 = _slicedToArray(_useState5, 2),
3935
+ polling = _useState6[0],
3936
+ setPolling = _useState6[1];
3937
+
3938
+ var _useContext = useContext(ErrorContext);
3939
+ _useContext.errorCallback;
3940
+
3941
+ var _useContext2 = useContext(ConfigurationContext),
3942
+ recover = _useContext2.recover;
3943
+
3944
+ useEffect(function () {
3945
+ if (polling) {
3946
+ var poll = function poll() {
3947
+ fetch("https://api.depay.fi/v2/transactions/".concat(givenTransaction.blockchain, "/").concat(givenTransaction.from.toLowerCase(), "/").concat(givenTransaction.nonce)).then(function (response) {
3948
+ if (response.status == 200) {
3949
+ response.json().then(function (data) {
3950
+ if (data.status != 'pending') {
3951
+ setFoundTransaction({
3952
+ id: data.external_id,
3953
+ status: data.status
3954
+ });
3955
+ setPolling(false);
3956
+ }
3957
+ });
3958
+ }
3959
+ });
3960
+ };
3961
+
3962
+ var pollingInterval = setInterval(poll, 5000);
3963
+ poll();
3964
+ return function () {
3965
+ clearInterval(pollingInterval);
3966
+ };
3967
+ }
3968
+ }, [polling]);
3969
+
3970
+ var createTracking = function createTracking(transaction, afterBlock, attempt) {
3971
+ if (attempt > 3) {
3972
+ console.log('TRANSACTION TRACKING FAILED AFTER 3 ATTEMPTS!');
3973
+ return;
3974
+ }
3975
+
3976
+ fetch('https://api.depay.fi/v2/transactions', {
3977
+ method: 'POST',
3978
+ headers: {
3979
+ 'X-Api-Key': apiKey,
3980
+ 'Content-Type': 'application/json'
3981
+ },
3982
+ body: JSON.stringify({
3983
+ id: transaction.id,
3984
+ after_block: afterBlock,
3985
+ blockchain: transaction.blockchain,
3986
+ sender: transaction.from.toLowerCase(),
3987
+ nonce: transaction.nonce
3988
+ })
3989
+ }).then(function (response) {
3990
+ if (response.status == 200 || response.status == 201) {
3991
+ console.log('TRANSACTION TRACKING INITIALIZED');
3992
+ } else {
3993
+ console.log('TRANSACTION TRACKING FAILED', response);
3994
+ setTimeout(function () {
3995
+ createTracking(transaction, afterBlock, attempt + 1);
3996
+ }, 3000);
3997
+ }
3998
+ })["catch"](function (error) {
3999
+ console.log('TRANSACTION TRACKING FAILED', error);
4000
+ setTimeout(function () {
4001
+ createTracking(transaction, afterBlock, attempt + 1);
4002
+ }, 3000);
4003
+ });
4004
+ };
4005
+
4006
+ var openSocket = function openSocket(transaction) {
4007
+ var socket = new WebSocket('wss://integrate.depay.fi/cable');
4008
+
4009
+ socket.onopen = function (event) {
4010
+ var msg = {
4011
+ command: 'subscribe',
4012
+ identifier: JSON.stringify({
4013
+ blockchain: transaction.blockchain,
4014
+ sender: transaction.from.toLowerCase(),
4015
+ nonce: transaction.nonce,
4016
+ channel: 'TransactionChannel'
4017
+ })
4018
+ };
4019
+ socket.send(JSON.stringify(msg));
4020
+ };
4021
+
4022
+ socket.onclose = function (event) {};
4023
+
4024
+ socket.onmessage = function (event) {
4025
+ var item = JSON.parse(event.data);
4026
+
4027
+ if (item.type === "ping") {
4028
+ return;
4029
+ }
4030
+
4031
+ if (item.message && item.message.status && item.message.status != 'pending') {
4032
+ setFoundTransaction(item.message);
4033
+ }
4034
+ };
4035
+
4036
+ socket.onerror = function (error) {
4037
+ console.log('WebSocket Error: ' + error);
4038
+ };
4039
+ };
4040
+
4041
+ var initializeTracking = function initializeTracking(transaction, afterBlock) {
4042
+ setGivenTransaction(transaction);
4043
+
4044
+ if (recover == undefined) {
4045
+ createTracking(transaction, afterBlock, 1);
4046
+ }
4047
+
4048
+ openSocket(transaction);
4049
+ setPolling(true);
4050
+ };
4051
+
4052
+ useEffect(function () {
4053
+ if (recover) {
4054
+ initializeTracking({
4055
+ blockchain: recover.blockchain,
4056
+ id: recover.transaction,
4057
+ from: recover.sender,
4058
+ nonce: recover.nonce
4059
+ }, recover.afterBlock);
4060
+ }
4061
+ }, [recover]);
4062
+ return /*#__PURE__*/React.createElement(TransactionTrackingContext.Provider, {
4063
+ value: {
4064
+ initializeTracking: initializeTracking,
4065
+ foundTransaction: foundTransaction
4066
+ }
4067
+ }, props.children);
4068
+ });
4069
+
3801
4070
  var WalletProvider = (function (props) {
3802
4071
  var _useContext = useContext(ErrorContext);
3803
4072
  _useContext.setError;
@@ -3937,9 +4206,9 @@ var Donation = /*#__PURE__*/function () {
3937
4206
  container: container,
3938
4207
  connected: connected,
3939
4208
  unmount: unmount
3940
- }, /*#__PURE__*/React.createElement(ConversionRateProvider, null, /*#__PURE__*/React.createElement(ChangableAmountProvider, {
4209
+ }, /*#__PURE__*/React.createElement(NavigateProvider, null, /*#__PURE__*/React.createElement(ConversionRateProvider, null, /*#__PURE__*/React.createElement(ChangableAmountProvider, {
3941
4210
  accept: accept
3942
- }, /*#__PURE__*/React.createElement(TrackingProvider, {
4211
+ }, /*#__PURE__*/React.createElement(TransactionTrackingProvider, null, /*#__PURE__*/React.createElement(PaymentTrackingProvider, {
3943
4212
  document: ensureDocument(document)
3944
4213
  }, /*#__PURE__*/React.createElement(DonationRoutingProvider, {
3945
4214
  container: container,
@@ -3947,7 +4216,7 @@ var Donation = /*#__PURE__*/function () {
3947
4216
  }, /*#__PURE__*/React.createElement(DonationStack, {
3948
4217
  document: document,
3949
4218
  container: container
3950
- }), /*#__PURE__*/React.createElement(PoweredBy, null))))))))));
4219
+ }), /*#__PURE__*/React.createElement(PoweredBy, null))))))))))));
3951
4220
  };
3952
4221
  });
3953
4222
  return _context2.abrupt("return", {
@@ -3998,6 +4267,9 @@ var SignLoginDialog = (function (props) {
3998
4267
  return new Promise(function (resolve, reject) {
3999
4268
  fetch(endpoint, {
4000
4269
  method: 'POST',
4270
+ headers: {
4271
+ 'Content-Type': 'application/json'
4272
+ },
4001
4273
  body: JSON.stringify({
4002
4274
  message: message,
4003
4275
  signature: signature
@@ -4214,7 +4486,8 @@ var PaymentOverviewSkeleton = (function (props) {
4214
4486
 
4215
4487
  var PaymentOverviewDialog = (function (props) {
4216
4488
  var _useContext = useContext(ConfigurationContext),
4217
- currencyCode = _useContext.currencyCode;
4489
+ currencyCode = _useContext.currencyCode,
4490
+ recover = _useContext.recover;
4218
4491
 
4219
4492
  var _useContext2 = useContext(PaymentContext),
4220
4493
  payment = _useContext2.payment,
@@ -4230,7 +4503,7 @@ var PaymentOverviewDialog = (function (props) {
4230
4503
  var _useContext5 = useContext(NavigateStackContext),
4231
4504
  navigate = _useContext5.navigate;
4232
4505
 
4233
- if (payment == undefined || paymentValue == undefined) {
4506
+ if (payment == undefined || recover == undefined && paymentValue == undefined) {
4234
4507
  return /*#__PURE__*/React.createElement(PaymentOverviewSkeleton, null);
4235
4508
  }
4236
4509
 
@@ -4281,7 +4554,7 @@ var PaymentOverviewDialog = (function (props) {
4281
4554
  className: "CardImage",
4282
4555
  title: payment.name
4283
4556
  }, /*#__PURE__*/React.createElement(TokenImage, {
4284
- blockchain: payment.route.blockchain,
4557
+ blockchain: payment.blockchain,
4285
4558
  address: payment.token
4286
4559
  })), /*#__PURE__*/React.createElement("div", {
4287
4560
  className: "CardBody"
@@ -4311,7 +4584,11 @@ var PaymentStack = (function (props) {
4311
4584
  open = _useContext.open,
4312
4585
  close = _useContext.close;
4313
4586
 
4587
+ var _useContext2 = useContext(NavigateContext),
4588
+ setNavigate = _useContext2.setNavigate;
4589
+
4314
4590
  return /*#__PURE__*/React.createElement(ReactDialogStack, {
4591
+ setNavigate: setNavigate,
4315
4592
  open: open,
4316
4593
  close: close,
4317
4594
  start: "PaymentOverview",
@@ -4329,12 +4606,21 @@ var PaymentStack = (function (props) {
4329
4606
 
4330
4607
  var preflight$1 = /*#__PURE__*/function () {
4331
4608
  var _ref2 = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee(_ref) {
4332
- var accept;
4609
+ var accept, recover;
4333
4610
  return regenerator.wrap(function _callee$(_context) {
4334
4611
  while (1) {
4335
4612
  switch (_context.prev = _context.next) {
4336
4613
  case 0:
4337
- accept = _ref.accept;
4614
+ accept = _ref.accept, recover = _ref.recover;
4615
+
4616
+ if (!recover) {
4617
+ _context.next = 3;
4618
+ break;
4619
+ }
4620
+
4621
+ return _context.abrupt("return");
4622
+
4623
+ case 3:
4338
4624
  accept.forEach(function (configuration) {
4339
4625
  if (typeof configuration.blockchain === 'undefined') {
4340
4626
  throw 'You need to set the blockchain your want to receive the payment on!';
@@ -4353,7 +4639,7 @@ var preflight$1 = /*#__PURE__*/function () {
4353
4639
  }
4354
4640
  });
4355
4641
 
4356
- case 2:
4642
+ case 4:
4357
4643
  case "end":
4358
4644
  return _context.stop();
4359
4645
  }
@@ -4368,16 +4654,17 @@ var preflight$1 = /*#__PURE__*/function () {
4368
4654
 
4369
4655
  var Payment = /*#__PURE__*/function () {
4370
4656
  var _ref4 = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee2(_ref3) {
4371
- var accept, amount, event, sent, confirmed, failed, error, critical, style, whitelist, blacklist, providers, currency, connected, closed, track, fee, document, unmount;
4657
+ var accept, amount, event, sent, confirmed, failed, error, critical, style, whitelist, blacklist, providers, currency, connected, closed, track, fee, recover, document, unmount;
4372
4658
  return regenerator.wrap(function _callee2$(_context2) {
4373
4659
  while (1) {
4374
4660
  switch (_context2.prev = _context2.next) {
4375
4661
  case 0:
4376
- accept = _ref3.accept, amount = _ref3.amount, event = _ref3.event, sent = _ref3.sent, confirmed = _ref3.confirmed, failed = _ref3.failed, error = _ref3.error, critical = _ref3.critical, style = _ref3.style, whitelist = _ref3.whitelist, blacklist = _ref3.blacklist, providers = _ref3.providers, currency = _ref3.currency, connected = _ref3.connected, closed = _ref3.closed, track = _ref3.track, fee = _ref3.fee, document = _ref3.document;
4662
+ accept = _ref3.accept, amount = _ref3.amount, event = _ref3.event, sent = _ref3.sent, confirmed = _ref3.confirmed, failed = _ref3.failed, error = _ref3.error, critical = _ref3.critical, style = _ref3.style, whitelist = _ref3.whitelist, blacklist = _ref3.blacklist, providers = _ref3.providers, currency = _ref3.currency, connected = _ref3.connected, closed = _ref3.closed, track = _ref3.track, fee = _ref3.fee, recover = _ref3.recover, document = _ref3.document;
4377
4663
  _context2.prev = 1;
4378
4664
  _context2.next = 4;
4379
4665
  return preflight$1({
4380
- accept: accept
4666
+ accept: accept,
4667
+ recover: recover
4381
4668
  });
4382
4669
 
4383
4670
  case 4:
@@ -4404,7 +4691,8 @@ var Payment = /*#__PURE__*/function () {
4404
4691
  blacklist: blacklist,
4405
4692
  providers: providers,
4406
4693
  track: track,
4407
- fee: fee
4694
+ fee: fee,
4695
+ recover: recover
4408
4696
  }
4409
4697
  }, /*#__PURE__*/React.createElement(UpdatableProvider, null, /*#__PURE__*/React.createElement(ClosableProvider, {
4410
4698
  unmount: unmount
@@ -4413,7 +4701,7 @@ var Payment = /*#__PURE__*/function () {
4413
4701
  container: container,
4414
4702
  connected: connected,
4415
4703
  unmount: unmount
4416
- }, /*#__PURE__*/React.createElement(ConversionRateProvider, null, /*#__PURE__*/React.createElement(ChangableAmountProvider, {
4704
+ }, /*#__PURE__*/React.createElement(NavigateProvider, null, /*#__PURE__*/React.createElement(ConversionRateProvider, null, /*#__PURE__*/React.createElement(ChangableAmountProvider, {
4417
4705
  accept: accept
4418
4706
  }, /*#__PURE__*/React.createElement(PaymentAmountRoutingProvider, {
4419
4707
  accept: accept,
@@ -4421,7 +4709,7 @@ var Payment = /*#__PURE__*/function () {
4421
4709
  blacklist: blacklist,
4422
4710
  event: event,
4423
4711
  fee: fee
4424
- }, /*#__PURE__*/React.createElement(TrackingProvider, {
4712
+ }, /*#__PURE__*/React.createElement(TransactionTrackingProvider, null, /*#__PURE__*/React.createElement(PaymentTrackingProvider, {
4425
4713
  document: ensureDocument(document)
4426
4714
  }, /*#__PURE__*/React.createElement(PaymentProvider, {
4427
4715
  container: container,
@@ -4429,7 +4717,7 @@ var Payment = /*#__PURE__*/function () {
4429
4717
  }, /*#__PURE__*/React.createElement(PaymentValueProvider, null, /*#__PURE__*/React.createElement(PaymentStack, {
4430
4718
  document: document,
4431
4719
  container: container
4432
- }), /*#__PURE__*/React.createElement(PoweredBy, null))))))))))));
4720
+ }), /*#__PURE__*/React.createElement(PoweredBy, null))))))))))))));
4433
4721
  };
4434
4722
  });
4435
4723
  return _context2.abrupt("return", {
@@ -4705,7 +4993,11 @@ var SaleStack = (function (props) {
4705
4993
  open = _useContext.open,
4706
4994
  close = _useContext.close;
4707
4995
 
4996
+ var _useContext2 = useContext(NavigateContext),
4997
+ setNavigate = _useContext2.setNavigate;
4998
+
4708
4999
  return /*#__PURE__*/React.createElement(ReactDialogStack, {
5000
+ setNavigate: setNavigate,
4709
5001
  open: open,
4710
5002
  close: close,
4711
5003
  start: "SaleOverview",
@@ -4816,9 +5108,9 @@ var Sale = /*#__PURE__*/function () {
4816
5108
  container: container,
4817
5109
  connected: connected,
4818
5110
  unmount: unmount
4819
- }, /*#__PURE__*/React.createElement(ConversionRateProvider, null, /*#__PURE__*/React.createElement(ChangableAmountProvider, {
5111
+ }, /*#__PURE__*/React.createElement(NavigateProvider, null, /*#__PURE__*/React.createElement(ConversionRateProvider, null, /*#__PURE__*/React.createElement(ChangableAmountProvider, {
4820
5112
  accept: accept
4821
- }, /*#__PURE__*/React.createElement(TrackingProvider, {
5113
+ }, /*#__PURE__*/React.createElement(TransactionTrackingProvider, null, /*#__PURE__*/React.createElement(PaymentTrackingProvider, {
4822
5114
  document: ensureDocument(document)
4823
5115
  }, /*#__PURE__*/React.createElement(SaleRoutingProvider, {
4824
5116
  container: container,
@@ -4826,7 +5118,7 @@ var Sale = /*#__PURE__*/function () {
4826
5118
  }, /*#__PURE__*/React.createElement(SaleStack, {
4827
5119
  document: document,
4828
5120
  container: container
4829
- }), /*#__PURE__*/React.createElement(PoweredBy, null))))))))));
5121
+ }), /*#__PURE__*/React.createElement(PoweredBy, null))))))))))));
4830
5122
  };
4831
5123
  });
4832
5124
  return _context2.abrupt("return", {