@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/umd/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('react'), require('@depay/react-dialog-stack'), require('@depay/web3-wallets'), require('react-dom'), require('@depay/react-shadow-dom'), require('ethers'), require('@depay/web3-constants'), require('decimal.js'), require('@depay/web3-exchanges'), require('@depay/web3-tokens'), require('@depay/local-currency'), require('@depay/web3-client'), require('@depay/web3-payments'), require('react-rangeslider'), require('@depay/react-token-image'), require('@depay/web3-blockchains')) :
3
- typeof define === 'function' && define.amd ? define(['react', '@depay/react-dialog-stack', '@depay/web3-wallets', 'react-dom', '@depay/react-shadow-dom', 'ethers', '@depay/web3-constants', 'decimal.js', '@depay/web3-exchanges', '@depay/web3-tokens', '@depay/local-currency', '@depay/web3-client', '@depay/web3-payments', 'react-rangeslider', '@depay/react-token-image', '@depay/web3-blockchains'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.DePayWidgets = factory(global.React, global.ReactDialogStack, global.Web3Wallets, global.ReactDOM, global.ReactShadowDOM, global.ethers, global.Web3Constants, global.Decimal, global.Web3Exchanges, global.Web3Tokens, global.LocalCurrency, global.Web3Client, global.Web3Payments, global.ReactRangeslider, global.ReactTokenImage, global.Web3Blockchains));
5
- })(this, (function (React, reactDialogStack, web3Wallets, ReactDOM, reactShadowDom, ethers, web3Constants, decimal_js, web3Exchanges, web3Tokens, localCurrency, web3Client, web3Payments, Slider, reactTokenImage, web3Blockchains) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('react'), require('@depay/react-dialog-stack'), require('@depay/web3-wallets'), require('react-dom'), require('@depay/react-shadow-dom'), require('ethers'), require('@depay/web3-constants'), require('decimal.js'), require('@depay/web3-exchanges'), require('@depay/web3-tokens'), require('@depay/local-currency'), require('@depay/web3-client'), require('@depay/web3-blockchains'), require('@depay/web3-payments'), require('react-rangeslider'), require('@depay/react-token-image')) :
3
+ typeof define === 'function' && define.amd ? define(['react', '@depay/react-dialog-stack', '@depay/web3-wallets', 'react-dom', '@depay/react-shadow-dom', 'ethers', '@depay/web3-constants', 'decimal.js', '@depay/web3-exchanges', '@depay/web3-tokens', '@depay/local-currency', '@depay/web3-client', '@depay/web3-blockchains', '@depay/web3-payments', 'react-rangeslider', '@depay/react-token-image'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.DePayWidgets = factory(global.React, global.ReactDialogStack, global.Web3Wallets, global.ReactDOM, global.ReactShadowDOM, global.ethers, global.Web3Constants, global.Decimal, global.Web3Exchanges, global.Web3Tokens, global.LocalCurrency, global.Web3Client, global.Web3Blockchains, global.Web3Payments, global.ReactRangeslider, global.ReactTokenImage));
5
+ })(this, (function (React, reactDialogStack, web3Wallets, ReactDOM, reactShadowDom, ethers, web3Constants, decimal_js, web3Exchanges, web3Tokens, localCurrency, web3Client, web3Blockchains, web3Payments, Slider, reactTokenImage) { 'use strict';
6
6
 
7
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
8
 
@@ -1452,6 +1452,8 @@
1452
1452
  constructor(props) {
1453
1453
  super(props);
1454
1454
 
1455
+ this.handler = this.onKeyDown.bind(this);
1456
+
1455
1457
  this.state = {
1456
1458
  open: true,
1457
1459
  };
@@ -1485,22 +1487,22 @@
1485
1487
  this.setState({ open: true });
1486
1488
  }, 10);
1487
1489
  });
1488
- this.props.document.addEventListener('keydown', this.onKeyDown.bind(this), false);
1490
+ this.props.document.addEventListener('keydown', this.handler, true);
1489
1491
  }
1490
1492
 
1491
1493
  componentWillUnmount() {
1492
- this.props.document.addEventListener('keydown', this.onKeyDown.bind(this), false);
1494
+ this.props.document.removeEventListener('keydown', this.handler, true);
1493
1495
  }
1494
1496
 
1495
1497
  render() {
1496
1498
  const classNames = ['ReactDialog', this.state.open ? 'ReactDialogOpen' : ''];
1497
1499
  const style = ReactDialogStyle({ background: this.props.background });
1498
1500
  return (
1499
- React__default["default"].createElement('div', { className: classNames.join(' '), __self: this, __source: {fileName: _jsxFileName, lineNumber: 54}}
1500
- , React__default["default"].createElement('style', {__self: this, __source: {fileName: _jsxFileName, lineNumber: 55}}, style)
1501
- , React__default["default"].createElement('div', { className: "ReactDialogRow", __self: this, __source: {fileName: _jsxFileName, lineNumber: 56}}
1502
- , React__default["default"].createElement('div', { className: "ReactDialogCell", __self: this, __source: {fileName: _jsxFileName, lineNumber: 57}}
1503
- , React__default["default"].createElement('div', { className: "ReactDialogBackground", onClick: this.onClickBackground.bind(this), __self: this, __source: {fileName: _jsxFileName, lineNumber: 58}} )
1501
+ React__default["default"].createElement('div', { className: classNames.join(' '), __self: this, __source: {fileName: _jsxFileName, lineNumber: 56}}
1502
+ , React__default["default"].createElement('style', {__self: this, __source: {fileName: _jsxFileName, lineNumber: 57}}, style)
1503
+ , React__default["default"].createElement('div', { className: "ReactDialogRow", __self: this, __source: {fileName: _jsxFileName, lineNumber: 58}}
1504
+ , React__default["default"].createElement('div', { className: "ReactDialogCell", __self: this, __source: {fileName: _jsxFileName, lineNumber: 59}}
1505
+ , React__default["default"].createElement('div', { className: "ReactDialogBackground", onClick: this.onClickBackground.bind(this), __self: this, __source: {fileName: _jsxFileName, lineNumber: 60}} )
1504
1506
  , this.props.children
1505
1507
  )
1506
1508
  )
@@ -1677,7 +1679,7 @@
1677
1679
  });
1678
1680
 
1679
1681
  var DialogStyle = (function (style) {
1680
- 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 ";
1682
+ 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 ";
1681
1683
  });
1682
1684
 
1683
1685
  var FontStyle = (function (style) {
@@ -1999,7 +2001,7 @@
1999
2001
  focusToFixed = parseFloat(_float).toFixed(1).replace('.', '');
2000
2002
  }
2001
2003
 
2002
- if (focusToFixed.toString()[0] != 0 && focusToFixed.toString().length > 2) {
2004
+ if (focusToFixed.toString()[0] != "0" && focusToFixed.toString().length > 2) {
2003
2005
  return parseInt(inputAsFloat.toFixed(0));
2004
2006
  } else {
2005
2007
  return parseFloat(digitsAfterDecimal.replace(/\d{3}$/, focusToFixed));
@@ -2018,16 +2020,17 @@
2018
2020
  });
2019
2021
  };
2020
2022
 
2021
- var _useState = React.useState(configurationsMissAmounts(props.accept)),
2023
+ var _useContext = React.useContext(ConfigurationContext),
2024
+ amountConfiguration = _useContext.amount,
2025
+ recover = _useContext.recover;
2026
+
2027
+ var _useState = React.useState(recover == undefined ? configurationsMissAmounts(props.accept) : false),
2022
2028
  _useState2 = _slicedToArray(_useState, 2),
2023
2029
  amountsMissing = _useState2[0],
2024
2030
  setAmountsMissing = _useState2[1];
2025
2031
 
2026
- var _useContext = React.useContext(WalletContext),
2027
- account = _useContext.account;
2028
-
2029
- var _useContext2 = React.useContext(ConfigurationContext),
2030
- amountConfiguration = _useContext2.amount;
2032
+ var _useContext2 = React.useContext(WalletContext),
2033
+ account = _useContext2.account;
2031
2034
 
2032
2035
  var _useContext3 = React.useContext(ConversionRateContext),
2033
2036
  conversionRate = _useContext3.conversionRate;
@@ -2056,8 +2059,12 @@
2056
2059
  setMaxAmount = _useState10[1];
2057
2060
 
2058
2061
  React.useEffect(function () {
2062
+ if (recover) {
2063
+ return;
2064
+ }
2065
+
2059
2066
  setAmountsMissing(configurationsMissAmounts(props.accept));
2060
- }, [props.accept]);
2067
+ }, [props.accept, recover]);
2061
2068
 
2062
2069
  var getAmounts = function getAmounts() {
2063
2070
  return new Promise(function (resolve, reject) {
@@ -2093,6 +2100,10 @@
2093
2100
  };
2094
2101
 
2095
2102
  React.useEffect(function () {
2103
+ if (recover) {
2104
+ return;
2105
+ }
2106
+
2096
2107
  if (amountsMissing && account && conversionRate) {
2097
2108
  getAmounts().then(function (amounts) {
2098
2109
  setAcceptWithAmount(props.accept.map(function (configuration, index) {
@@ -2111,7 +2122,7 @@
2111
2122
  }));
2112
2123
  })["catch"](setError);
2113
2124
  }
2114
- }, [amountsMissing, account, conversionRate, amount]);
2125
+ }, [amountsMissing, account, conversionRate, amount, recover]);
2115
2126
  React.useEffect(function () {
2116
2127
  if (amountsMissing && maxRoute) {
2117
2128
  maxRoute.fromToken.readable(maxRoute.fromBalance).then(function (readableMaxAmount) {
@@ -2225,6 +2236,8 @@
2225
2236
 
2226
2237
  var DonationRoutingContext = /*#__PURE__*/React__default["default"].createContext();
2227
2238
 
2239
+ var NavigateContext = /*#__PURE__*/React__default["default"].createContext();
2240
+
2228
2241
  var QuestionsGraphic = "data:image/png;base64,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";
2229
2242
 
2230
2243
  var NoPaymentMethodFoundDialog = (function () {
@@ -2260,7 +2273,9 @@
2260
2273
 
2261
2274
  var PaymentRoutingContext = /*#__PURE__*/React__default["default"].createContext();
2262
2275
 
2263
- var TrackingContext = /*#__PURE__*/React__default["default"].createContext();
2276
+ var PaymentTrackingContext = /*#__PURE__*/React__default["default"].createContext();
2277
+
2278
+ var TransactionTrackingContext = /*#__PURE__*/React__default["default"].createContext();
2264
2279
 
2265
2280
  var PaymentProvider = (function (props) {
2266
2281
  var _useContext = React.useContext(ErrorContext),
@@ -2268,11 +2283,13 @@
2268
2283
 
2269
2284
  var _useContext2 = React.useContext(ConfigurationContext),
2270
2285
  _sent = _useContext2.sent,
2271
- _confirmed = _useContext2.confirmed,
2272
- _failed = _useContext2.failed;
2286
+ confirmed = _useContext2.confirmed,
2287
+ failed = _useContext2.failed,
2288
+ recover = _useContext2.recover;
2273
2289
 
2274
2290
  var _useContext3 = React.useContext(PaymentRoutingContext),
2275
- selectedRoute = _useContext3.selectedRoute;
2291
+ selectedRoute = _useContext3.selectedRoute,
2292
+ getPaymentRoutes = _useContext3.getPaymentRoutes;
2276
2293
 
2277
2294
  var _useContext4 = React.useContext(ClosableContext),
2278
2295
  open = _useContext4.open,
@@ -2285,13 +2302,20 @@
2285
2302
  var _useContext6 = React.useContext(UpdatableContext),
2286
2303
  setUpdatable = _useContext6.setUpdatable;
2287
2304
 
2288
- var _useContext7 = React.useContext(WalletContext),
2289
- wallet = _useContext7.wallet;
2305
+ var _useContext7 = React.useContext(NavigateContext),
2306
+ navigate = _useContext7.navigate;
2307
+
2308
+ var _useContext8 = React.useContext(WalletContext),
2309
+ wallet = _useContext8.wallet;
2290
2310
 
2291
- var _useContext8 = React.useContext(TrackingContext),
2292
- release = _useContext8.release,
2293
- tracking = _useContext8.tracking,
2294
- initializeTracking = _useContext8.initializeTracking;
2311
+ var _useContext9 = React.useContext(PaymentTrackingContext),
2312
+ release = _useContext9.release,
2313
+ tracking = _useContext9.tracking,
2314
+ initializeTracking = _useContext9.initializeTracking;
2315
+
2316
+ var _useContext10 = React.useContext(TransactionTrackingContext),
2317
+ foundTransaction = _useContext10.foundTransaction,
2318
+ initializeTransactionTracking = _useContext10.initializeTracking;
2295
2319
 
2296
2320
  var _useState = React.useState(),
2297
2321
  _useState2 = _slicedToArray(_useState, 2),
@@ -2313,52 +2337,59 @@
2313
2337
  paymentState = _useState8[0],
2314
2338
  setPaymentState = _useState8[1];
2315
2339
 
2340
+ var paymentConfirmed = function paymentConfirmed(transaction) {
2341
+ if (tracking != true) {
2342
+ setClosable(true);
2343
+ }
2344
+
2345
+ setPaymentState('confirmed');
2346
+
2347
+ if (confirmed) {
2348
+ confirmed(transaction);
2349
+ }
2350
+ };
2351
+
2352
+ var paymentFailed = function paymentFailed(transaction, error) {
2353
+ if (failed) {
2354
+ failed(transaction, error);
2355
+ }
2356
+
2357
+ setPaymentState('initialized');
2358
+ setPayment(null);
2359
+ setClosable(true);
2360
+ setUpdatable(true);
2361
+ getPaymentRoutes({});
2362
+ navigate('PaymentError');
2363
+ };
2364
+
2316
2365
  var pay = /*#__PURE__*/function () {
2317
- var _ref2 = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee(_ref) {
2318
- var navigate, currentBlock;
2366
+ var _ref = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee() {
2367
+ var currentBlock;
2319
2368
  return regenerator.wrap(function _callee$(_context) {
2320
2369
  while (1) {
2321
2370
  switch (_context.prev = _context.next) {
2322
2371
  case 0:
2323
- navigate = _ref.navigate;
2324
2372
  setClosable(false);
2325
2373
  setPaymentState('paying');
2326
2374
  setUpdatable(false);
2327
- _context.next = 6;
2375
+ _context.next = 5;
2328
2376
  return web3Client.request({
2329
2377
  blockchain: payment.route.transaction.blockchain,
2330
2378
  method: 'latestBlockNumber'
2331
2379
  });
2332
2380
 
2333
- case 6:
2381
+ case 5:
2334
2382
  currentBlock = _context.sent;
2335
2383
  wallet.sendTransaction(Object.assign({}, payment.route.transaction, {
2336
2384
  sent: function sent(transaction) {
2385
+ initializeTransactionTracking(transaction, currentBlock);
2386
+
2337
2387
  if (_sent) {
2338
2388
  _sent(transaction);
2339
2389
  }
2340
2390
  },
2341
- confirmed: function confirmed(transaction) {
2342
- if (tracking != true) {
2343
- setClosable(true);
2344
- }
2345
-
2346
- setPaymentState('confirmed');
2347
-
2348
- if (_confirmed) {
2349
- _confirmed(transaction);
2350
- }
2351
- },
2352
- failed: function failed(transaction, error) {
2353
- if (_failed) {
2354
- _failed(transaction, error);
2355
- }
2356
-
2357
- setPaymentState('initialized');
2358
- setClosable(true);
2359
- setUpdatable(true);
2360
- navigate('PaymentError');
2361
- }
2391
+ confirmed: paymentConfirmed,
2392
+ failed: paymentFailed
2362
2393
  })).then(function (sentTransaction) {
2363
2394
  if (tracking) {
2364
2395
  initializeTracking(sentTransaction, currentBlock, payment.route);
@@ -2376,7 +2407,7 @@
2376
2407
  }
2377
2408
  });
2378
2409
 
2379
- case 8:
2410
+ case 7:
2380
2411
  case "end":
2381
2412
  return _context.stop();
2382
2413
  }
@@ -2384,8 +2415,8 @@
2384
2415
  }, _callee);
2385
2416
  }));
2386
2417
 
2387
- return function pay(_x) {
2388
- return _ref2.apply(this, arguments);
2418
+ return function pay() {
2419
+ return _ref.apply(this, arguments);
2389
2420
  };
2390
2421
  }();
2391
2422
 
@@ -2413,19 +2444,73 @@
2413
2444
  setPaymentState('confirmed');
2414
2445
  }
2415
2446
  }, [release]);
2447
+ React.useEffect(function () {
2448
+ if (recover) {
2449
+ setClosable(false);
2450
+ setUpdatable(false);
2451
+ setPaymentState('paying');
2452
+ setTransaction({
2453
+ blockchain: recover.blockchain,
2454
+ id: recover.transaction,
2455
+ url: web3Blockchains.Blockchain.findByName(recover.blockchain).explorerUrlFor({
2456
+ transaction: {
2457
+ id: recover.transaction
2458
+ }
2459
+ })
2460
+ });
2461
+ var paymentToken = new web3Tokens.Token({
2462
+ blockchain: recover.blockchain,
2463
+ address: recover.token
2464
+ });
2465
+ Promise.all([paymentToken.name(), paymentToken.symbol()]).then(function (_ref2) {
2466
+ var _ref3 = _slicedToArray(_ref2, 2),
2467
+ name = _ref3[0],
2468
+ symbol = _ref3[1];
2469
+
2470
+ setPayment({
2471
+ blockchain: recover.blockchain,
2472
+ token: recover.token,
2473
+ name: name,
2474
+ symbol: symbol.toUpperCase(),
2475
+ amount: recover.amount
2476
+ });
2477
+ })["catch"](setError);
2478
+ }
2479
+ }, [recover]);
2480
+ React.useEffect(function () {
2481
+ if (foundTransaction && foundTransaction.id && foundTransaction.status) {
2482
+ var newTransaction;
2483
+
2484
+ if (foundTransaction.id.toLowerCase() != transaction.id.toLowerCase()) {
2485
+ newTransaction = Object.assign({}, transaction, {
2486
+ id: foundTransaction.id,
2487
+ url: web3Blockchains.Blockchain.findByName(transaction.blockchain).explorerUrlFor({
2488
+ transaction: foundTransaction
2489
+ })
2490
+ });
2491
+ setTransaction(newTransaction);
2492
+ }
2493
+
2494
+ if (foundTransaction.status == 'success') {
2495
+ paymentConfirmed(newTransaction || transaction);
2496
+ } else if (foundTransaction.status == 'failed') {
2497
+ paymentFailed(newTransaction || transaction);
2498
+ }
2499
+ }
2500
+ }, [foundTransaction, transaction]);
2416
2501
  React.useEffect(function () {
2417
2502
  if (selectedRoute) {
2418
2503
  var fromToken = selectedRoute.fromToken;
2419
- selectedRoute.transaction.params;
2420
- Promise.all([fromToken.name(), fromToken.symbol(), fromToken.readable(selectedRoute.fromAmount)]).then(function (_ref3) {
2421
- var _ref4 = _slicedToArray(_ref3, 3),
2422
- name = _ref4[0],
2423
- symbol = _ref4[1],
2424
- amount = _ref4[2];
2504
+ Promise.all([fromToken.name(), fromToken.symbol(), fromToken.readable(selectedRoute.fromAmount)]).then(function (_ref4) {
2505
+ var _ref5 = _slicedToArray(_ref4, 3),
2506
+ name = _ref5[0],
2507
+ symbol = _ref5[1],
2508
+ amount = _ref5[2];
2425
2509
 
2426
2510
  setPayment({
2511
+ blockchain: selectedRoute.blockchain,
2427
2512
  route: selectedRoute,
2428
- token: selectedRoute.fromToken.address,
2513
+ token: fromToken.address,
2429
2514
  name: name,
2430
2515
  symbol: symbol.toUpperCase(),
2431
2516
  amount: amount
@@ -2508,6 +2593,9 @@
2508
2593
  var _useContext2 = React.useContext(UpdatableContext),
2509
2594
  updatable = _useContext2.updatable;
2510
2595
 
2596
+ var _useContext3 = React.useContext(ConfigurationContext),
2597
+ recover = _useContext3.recover;
2598
+
2511
2599
  var prepareAcceptedPayments = function prepareAcceptedPayments(accept) {
2512
2600
  var toAddress = _typeof(accept.receiver) == 'object' ? accept.receiver.address : accept.receiver;
2513
2601
  var toContract = _typeof(accept.receiver) == 'object' ? accept.receiver : undefined;
@@ -2635,7 +2723,7 @@
2635
2723
  };
2636
2724
  }, [reloadCount, allRoutes, selectedRoute, updatable]);
2637
2725
  React.useEffect(function () {
2638
- if (account && props.accept) {
2726
+ if (account && props.accept && recover == undefined) {
2639
2727
  setAllRoutes(undefined);
2640
2728
  setSelectedRoute(undefined);
2641
2729
  getPaymentRoutes({});
@@ -2648,6 +2736,7 @@
2648
2736
  value: {
2649
2737
  selectedRoute: selectedRoute,
2650
2738
  setSelectedRoute: setSelectedRoute,
2739
+ getPaymentRoutes: getPaymentRoutes,
2651
2740
  allRoutes: allRoutes,
2652
2741
  setAllRoutes: setAllRoutes
2653
2742
  }
@@ -2773,7 +2862,7 @@
2773
2862
  });
2774
2863
 
2775
2864
  var format = (function (input) {
2776
- var _float = parseFloat(input);
2865
+ var _float = round(input);
2777
2866
 
2778
2867
  var floatToString = _float.toString();
2779
2868
 
@@ -3166,7 +3255,7 @@
3166
3255
  amount = _useContext2.amount;
3167
3256
  _useContext2.amountsMissing;
3168
3257
 
3169
- var _useContext3 = React.useContext(TrackingContext),
3258
+ var _useContext3 = React.useContext(PaymentTrackingContext),
3170
3259
  tracking = _useContext3.tracking,
3171
3260
  release = _useContext3.release,
3172
3261
  forwardTo = _useContext3.forwardTo,
@@ -3183,8 +3272,8 @@
3183
3272
  var _useContext5 = React.useContext(PaymentValueContext),
3184
3273
  paymentValue = _useContext5.paymentValue;
3185
3274
 
3186
- var _useContext6 = React.useContext(reactDialogStack.NavigateStackContext),
3187
- navigate = _useContext6.navigate;
3275
+ var _useContext6 = React.useContext(reactDialogStack.NavigateStackContext);
3276
+ _useContext6.navigate;
3188
3277
 
3189
3278
  var _useContext7 = React.useContext(ClosableContext),
3190
3279
  close = _useContext7.close;
@@ -3290,7 +3379,7 @@
3290
3379
  };
3291
3380
 
3292
3381
  var approvalButton = function approvalButton() {
3293
- if (!payment.route.approvalRequired || payment.route.directTransfer) {
3382
+ if (payment.route == undefined || !payment.route.approvalRequired || payment.route.directTransfer) {
3294
3383
  return null;
3295
3384
  } else if (paymentState == 'initialized') {
3296
3385
  return /*#__PURE__*/React__default["default"].createElement("div", {
@@ -3327,7 +3416,7 @@
3327
3416
  displayedAmount = "".concat(payment.symbol, " ").concat(payment.amount);
3328
3417
  }
3329
3418
 
3330
- if (paymentState == 'initialized' || paymentState == 'approving') {
3419
+ if ((paymentState == 'initialized' || paymentState == 'approving') && payment.route) {
3331
3420
  return /*#__PURE__*/React__default["default"].createElement("button", {
3332
3421
  className: ["ButtonPrimary", payment.route.approvalRequired && !payment.route.directTransfer ? 'disabled' : ''].join(' '),
3333
3422
  onClick: function onClick() {
@@ -3335,9 +3424,7 @@
3335
3424
  return;
3336
3425
  }
3337
3426
 
3338
- pay({
3339
- navigate: navigate
3340
- });
3427
+ pay();
3341
3428
  }
3342
3429
  }, "Pay ", displayedAmount);
3343
3430
  } else if (paymentState == 'paying') {
@@ -3478,8 +3565,11 @@
3478
3565
  var _useContext2 = React.useContext(PaymentContext),
3479
3566
  transaction = _useContext2.transaction;
3480
3567
 
3568
+ var _useContext3 = React.useContext(ConfigurationContext),
3569
+ recover = _useContext3.recover;
3570
+
3481
3571
  return /*#__PURE__*/React__default["default"].createElement(Dialog$1, {
3482
- stacked: true,
3572
+ stacked: recover ? false : true,
3483
3573
  header: /*#__PURE__*/React__default["default"].createElement("div", {
3484
3574
  className: "PaddingTopS PaddingLeftM PaddingRightM"
3485
3575
  }),
@@ -3492,7 +3582,7 @@
3492
3582
  className: "LineHeightL Text FontSizeL PaddingTopS FontWeightBold"
3493
3583
  }, "Payment Failed"), /*#__PURE__*/React__default["default"].createElement("div", {
3494
3584
  className: "Text PaddingTopS PaddingBottomS PaddingLeftS PaddingRightS"
3495
- }, /*#__PURE__*/React__default["default"].createElement("strong", {
3585
+ }, recover == undefined && /*#__PURE__*/React__default["default"].createElement("strong", {
3496
3586
  className: "FontSizeM"
3497
3587
  }, "Unfortunately executing your payment failed. You can go back and try again."), transaction && /*#__PURE__*/React__default["default"].createElement("div", {
3498
3588
  className: "PaddingTopS"
@@ -3505,7 +3595,7 @@
3505
3595
  }, "View on explorer")))),
3506
3596
  footer: /*#__PURE__*/React__default["default"].createElement("div", {
3507
3597
  className: "PaddingTopXS PaddingRightM PaddingLeftM PaddingBottomM"
3508
- }, /*#__PURE__*/React__default["default"].createElement("button", {
3598
+ }, recover == undefined && /*#__PURE__*/React__default["default"].createElement("button", {
3509
3599
  className: "ButtonPrimary",
3510
3600
  onClick: function onClick() {
3511
3601
  return navigate('back');
@@ -3561,7 +3651,11 @@
3561
3651
  open = _useContext.open,
3562
3652
  close = _useContext.close;
3563
3653
 
3654
+ var _useContext2 = React.useContext(NavigateContext),
3655
+ setNavigate = _useContext2.setNavigate;
3656
+
3564
3657
  return /*#__PURE__*/React__default["default"].createElement(reactDialogStack.ReactDialogStack, {
3658
+ setNavigate: setNavigate,
3565
3659
  open: open,
3566
3660
  close: close,
3567
3661
  start: "DonationOverview",
@@ -3577,7 +3671,28 @@
3577
3671
  });
3578
3672
  });
3579
3673
 
3580
- var TrackingProvider = (function (props) {
3674
+ var NavigateProvider = (function (props) {
3675
+ var navigator;
3676
+
3677
+ var setNavigate = function setNavigate(_navigator) {
3678
+ navigator = _navigator;
3679
+ };
3680
+
3681
+ var navigate = function navigate(dialog) {
3682
+ if (navigator) {
3683
+ navigator(dialog);
3684
+ }
3685
+ };
3686
+
3687
+ return /*#__PURE__*/React__default["default"].createElement(NavigateContext.Provider, {
3688
+ value: {
3689
+ navigate: navigate,
3690
+ setNavigate: setNavigate
3691
+ }
3692
+ }, props.children);
3693
+ });
3694
+
3695
+ var PaymentTrackingProvider = (function (props) {
3581
3696
  var _useContext = React.useContext(ErrorContext),
3582
3697
  errorCallback = _useContext.errorCallback;
3583
3698
 
@@ -3671,14 +3786,14 @@
3671
3786
 
3672
3787
  var retryStartTracking = function retryStartTracking(transaction, afterBlock, paymentRoute, attempt) {
3673
3788
  attempt = parseInt(attempt || 1, 10);
3674
- console.log('RETRY TRACKING ATTEMPT ', attempt);
3789
+ console.log('RETRYING PAYMENT TRACKING ATTEMPT ', attempt);
3675
3790
 
3676
3791
  if (attempt < 3) {
3677
3792
  setTimeout(function () {
3678
3793
  startTracking(transaction, afterBlock, paymentRoute, attempt + 1);
3679
3794
  }, 3000);
3680
3795
  } else {
3681
- console.log('TRACKING FAILED AFTER 3 ATTEMPTS!');
3796
+ console.log('PAYMENT TRACKING FAILED AFTER 3 ATTEMPTS!');
3682
3797
  setTrackingFailed(true);
3683
3798
 
3684
3799
  if (typeof errorCallback == 'function') {
@@ -3693,6 +3808,9 @@
3693
3808
  if (track.endpoint) {
3694
3809
  return fetch(track.endpoint, {
3695
3810
  method: 'POST',
3811
+ headers: {
3812
+ 'Content-Type': 'application/json'
3813
+ },
3696
3814
  body: JSON.stringify(payment)
3697
3815
  });
3698
3816
  } else if (track.method) {
@@ -3712,12 +3830,12 @@
3712
3830
  to_token: paymentRoute.toToken.address
3713
3831
  }).then(function (response) {
3714
3832
  if (response.status == 200) {
3715
- console.log('TRACKING INITIALIZED');
3833
+ console.log('PAYMENT TRACKING INITIALIZED');
3716
3834
  } else {
3717
3835
  retryStartTracking(transaction, afterBlock, paymentRoute, attempt);
3718
3836
  }
3719
3837
  })["catch"](function (error) {
3720
- console.log('TRACKING FAILED', error);
3838
+ console.log('PAYMENT TRACKING FAILED', error);
3721
3839
  retryStartTracking(transaction, afterBlock, paymentRoute, attempt);
3722
3840
  });
3723
3841
  };
@@ -3754,6 +3872,9 @@
3754
3872
  if (track.poll.endpoint) {
3755
3873
  fetch(track.poll.endpoint, {
3756
3874
  method: 'POST',
3875
+ headers: {
3876
+ 'Content-Type': 'application/json'
3877
+ },
3757
3878
  body: JSON.stringify(payment)
3758
3879
  }).then(handleResponse);
3759
3880
  } else if (track.poll.method) {
@@ -3782,7 +3903,7 @@
3782
3903
  startTracking(transaction, afterBlock, paymentRoute);
3783
3904
  };
3784
3905
 
3785
- return /*#__PURE__*/React__default["default"].createElement(TrackingContext.Provider, {
3906
+ return /*#__PURE__*/React__default["default"].createElement(PaymentTrackingContext.Provider, {
3786
3907
  value: {
3787
3908
  tracking: tracking,
3788
3909
  initializeTracking: initializeTracking,
@@ -3793,6 +3914,154 @@
3793
3914
  }, props.children);
3794
3915
  });
3795
3916
 
3917
+ var TransactionTrackingProvider = (function (props) {
3918
+ var _useState = React.useState(),
3919
+ _useState2 = _slicedToArray(_useState, 2),
3920
+ givenTransaction = _useState2[0],
3921
+ setGivenTransaction = _useState2[1];
3922
+
3923
+ var _useState3 = React.useState(),
3924
+ _useState4 = _slicedToArray(_useState3, 2),
3925
+ foundTransaction = _useState4[0],
3926
+ setFoundTransaction = _useState4[1];
3927
+
3928
+ var _useState5 = React.useState(false),
3929
+ _useState6 = _slicedToArray(_useState5, 2),
3930
+ polling = _useState6[0],
3931
+ setPolling = _useState6[1];
3932
+
3933
+ var _useContext = React.useContext(ErrorContext);
3934
+ _useContext.errorCallback;
3935
+
3936
+ var _useContext2 = React.useContext(ConfigurationContext),
3937
+ recover = _useContext2.recover;
3938
+
3939
+ React.useEffect(function () {
3940
+ if (polling) {
3941
+ var poll = function poll() {
3942
+ fetch("https://api.depay.fi/v2/transactions/".concat(givenTransaction.blockchain, "/").concat(givenTransaction.from.toLowerCase(), "/").concat(givenTransaction.nonce)).then(function (response) {
3943
+ if (response.status == 200) {
3944
+ response.json().then(function (data) {
3945
+ if (data.status != 'pending') {
3946
+ setFoundTransaction({
3947
+ id: data.external_id,
3948
+ status: data.status
3949
+ });
3950
+ setPolling(false);
3951
+ }
3952
+ });
3953
+ }
3954
+ });
3955
+ };
3956
+
3957
+ var pollingInterval = setInterval(poll, 5000);
3958
+ poll();
3959
+ return function () {
3960
+ clearInterval(pollingInterval);
3961
+ };
3962
+ }
3963
+ }, [polling]);
3964
+
3965
+ var createTracking = function createTracking(transaction, afterBlock, attempt) {
3966
+ if (attempt > 3) {
3967
+ console.log('TRANSACTION TRACKING FAILED AFTER 3 ATTEMPTS!');
3968
+ return;
3969
+ }
3970
+
3971
+ fetch('https://api.depay.fi/v2/transactions', {
3972
+ method: 'POST',
3973
+ headers: {
3974
+ 'X-Api-Key': apiKey,
3975
+ 'Content-Type': 'application/json'
3976
+ },
3977
+ body: JSON.stringify({
3978
+ id: transaction.id,
3979
+ after_block: afterBlock,
3980
+ blockchain: transaction.blockchain,
3981
+ sender: transaction.from.toLowerCase(),
3982
+ nonce: transaction.nonce
3983
+ })
3984
+ }).then(function (response) {
3985
+ if (response.status == 200 || response.status == 201) {
3986
+ console.log('TRANSACTION TRACKING INITIALIZED');
3987
+ } else {
3988
+ console.log('TRANSACTION TRACKING FAILED', response);
3989
+ setTimeout(function () {
3990
+ createTracking(transaction, afterBlock, attempt + 1);
3991
+ }, 3000);
3992
+ }
3993
+ })["catch"](function (error) {
3994
+ console.log('TRANSACTION TRACKING FAILED', error);
3995
+ setTimeout(function () {
3996
+ createTracking(transaction, afterBlock, attempt + 1);
3997
+ }, 3000);
3998
+ });
3999
+ };
4000
+
4001
+ var openSocket = function openSocket(transaction) {
4002
+ var socket = new WebSocket('wss://integrate.depay.fi/cable');
4003
+
4004
+ socket.onopen = function (event) {
4005
+ var msg = {
4006
+ command: 'subscribe',
4007
+ identifier: JSON.stringify({
4008
+ blockchain: transaction.blockchain,
4009
+ sender: transaction.from.toLowerCase(),
4010
+ nonce: transaction.nonce,
4011
+ channel: 'TransactionChannel'
4012
+ })
4013
+ };
4014
+ socket.send(JSON.stringify(msg));
4015
+ };
4016
+
4017
+ socket.onclose = function (event) {};
4018
+
4019
+ socket.onmessage = function (event) {
4020
+ var item = JSON.parse(event.data);
4021
+
4022
+ if (item.type === "ping") {
4023
+ return;
4024
+ }
4025
+
4026
+ if (item.message && item.message.status && item.message.status != 'pending') {
4027
+ setFoundTransaction(item.message);
4028
+ }
4029
+ };
4030
+
4031
+ socket.onerror = function (error) {
4032
+ console.log('WebSocket Error: ' + error);
4033
+ };
4034
+ };
4035
+
4036
+ var initializeTracking = function initializeTracking(transaction, afterBlock) {
4037
+ setGivenTransaction(transaction);
4038
+
4039
+ if (recover == undefined) {
4040
+ createTracking(transaction, afterBlock, 1);
4041
+ }
4042
+
4043
+ openSocket(transaction);
4044
+ setPolling(true);
4045
+ };
4046
+
4047
+ React.useEffect(function () {
4048
+ if (recover) {
4049
+ initializeTracking({
4050
+ blockchain: recover.blockchain,
4051
+ id: recover.transaction,
4052
+ from: recover.sender,
4053
+ nonce: recover.nonce
4054
+ }, recover.afterBlock);
4055
+ }
4056
+ }, [recover]);
4057
+ return /*#__PURE__*/React__default["default"].createElement(TransactionTrackingContext.Provider, {
4058
+ value: {
4059
+ initializeTracking: initializeTracking,
4060
+ foundTransaction: foundTransaction
4061
+ }
4062
+ }, props.children);
4063
+ });
4064
+
3796
4065
  var WalletProvider = (function (props) {
3797
4066
  var _useContext = React.useContext(ErrorContext);
3798
4067
  _useContext.setError;
@@ -3932,9 +4201,9 @@
3932
4201
  container: container,
3933
4202
  connected: connected,
3934
4203
  unmount: unmount
3935
- }, /*#__PURE__*/React__default["default"].createElement(ConversionRateProvider, null, /*#__PURE__*/React__default["default"].createElement(ChangableAmountProvider, {
4204
+ }, /*#__PURE__*/React__default["default"].createElement(NavigateProvider, null, /*#__PURE__*/React__default["default"].createElement(ConversionRateProvider, null, /*#__PURE__*/React__default["default"].createElement(ChangableAmountProvider, {
3936
4205
  accept: accept
3937
- }, /*#__PURE__*/React__default["default"].createElement(TrackingProvider, {
4206
+ }, /*#__PURE__*/React__default["default"].createElement(TransactionTrackingProvider, null, /*#__PURE__*/React__default["default"].createElement(PaymentTrackingProvider, {
3938
4207
  document: ensureDocument(document)
3939
4208
  }, /*#__PURE__*/React__default["default"].createElement(DonationRoutingProvider, {
3940
4209
  container: container,
@@ -3942,7 +4211,7 @@
3942
4211
  }, /*#__PURE__*/React__default["default"].createElement(DonationStack, {
3943
4212
  document: document,
3944
4213
  container: container
3945
- }), /*#__PURE__*/React__default["default"].createElement(PoweredBy, null))))))))));
4214
+ }), /*#__PURE__*/React__default["default"].createElement(PoweredBy, null))))))))))));
3946
4215
  };
3947
4216
  });
3948
4217
  return _context2.abrupt("return", {
@@ -3993,6 +4262,9 @@
3993
4262
  return new Promise(function (resolve, reject) {
3994
4263
  fetch(endpoint, {
3995
4264
  method: 'POST',
4265
+ headers: {
4266
+ 'Content-Type': 'application/json'
4267
+ },
3996
4268
  body: JSON.stringify({
3997
4269
  message: message,
3998
4270
  signature: signature
@@ -4209,7 +4481,8 @@
4209
4481
 
4210
4482
  var PaymentOverviewDialog = (function (props) {
4211
4483
  var _useContext = React.useContext(ConfigurationContext),
4212
- currencyCode = _useContext.currencyCode;
4484
+ currencyCode = _useContext.currencyCode,
4485
+ recover = _useContext.recover;
4213
4486
 
4214
4487
  var _useContext2 = React.useContext(PaymentContext),
4215
4488
  payment = _useContext2.payment,
@@ -4225,7 +4498,7 @@
4225
4498
  var _useContext5 = React.useContext(reactDialogStack.NavigateStackContext),
4226
4499
  navigate = _useContext5.navigate;
4227
4500
 
4228
- if (payment == undefined || paymentValue == undefined) {
4501
+ if (payment == undefined || recover == undefined && paymentValue == undefined) {
4229
4502
  return /*#__PURE__*/React__default["default"].createElement(PaymentOverviewSkeleton, null);
4230
4503
  }
4231
4504
 
@@ -4276,7 +4549,7 @@
4276
4549
  className: "CardImage",
4277
4550
  title: payment.name
4278
4551
  }, /*#__PURE__*/React__default["default"].createElement(reactTokenImage.TokenImage, {
4279
- blockchain: payment.route.blockchain,
4552
+ blockchain: payment.blockchain,
4280
4553
  address: payment.token
4281
4554
  })), /*#__PURE__*/React__default["default"].createElement("div", {
4282
4555
  className: "CardBody"
@@ -4306,7 +4579,11 @@
4306
4579
  open = _useContext.open,
4307
4580
  close = _useContext.close;
4308
4581
 
4582
+ var _useContext2 = React.useContext(NavigateContext),
4583
+ setNavigate = _useContext2.setNavigate;
4584
+
4309
4585
  return /*#__PURE__*/React__default["default"].createElement(reactDialogStack.ReactDialogStack, {
4586
+ setNavigate: setNavigate,
4310
4587
  open: open,
4311
4588
  close: close,
4312
4589
  start: "PaymentOverview",
@@ -4324,12 +4601,21 @@
4324
4601
 
4325
4602
  var preflight$1 = /*#__PURE__*/function () {
4326
4603
  var _ref2 = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee(_ref) {
4327
- var accept;
4604
+ var accept, recover;
4328
4605
  return regenerator.wrap(function _callee$(_context) {
4329
4606
  while (1) {
4330
4607
  switch (_context.prev = _context.next) {
4331
4608
  case 0:
4332
- accept = _ref.accept;
4609
+ accept = _ref.accept, recover = _ref.recover;
4610
+
4611
+ if (!recover) {
4612
+ _context.next = 3;
4613
+ break;
4614
+ }
4615
+
4616
+ return _context.abrupt("return");
4617
+
4618
+ case 3:
4333
4619
  accept.forEach(function (configuration) {
4334
4620
  if (typeof configuration.blockchain === 'undefined') {
4335
4621
  throw 'You need to set the blockchain your want to receive the payment on!';
@@ -4348,7 +4634,7 @@
4348
4634
  }
4349
4635
  });
4350
4636
 
4351
- case 2:
4637
+ case 4:
4352
4638
  case "end":
4353
4639
  return _context.stop();
4354
4640
  }
@@ -4363,16 +4649,17 @@
4363
4649
 
4364
4650
  var Payment = /*#__PURE__*/function () {
4365
4651
  var _ref4 = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee2(_ref3) {
4366
- var accept, amount, event, sent, confirmed, failed, error, critical, style, whitelist, blacklist, providers, currency, connected, closed, track, fee, document, unmount;
4652
+ var accept, amount, event, sent, confirmed, failed, error, critical, style, whitelist, blacklist, providers, currency, connected, closed, track, fee, recover, document, unmount;
4367
4653
  return regenerator.wrap(function _callee2$(_context2) {
4368
4654
  while (1) {
4369
4655
  switch (_context2.prev = _context2.next) {
4370
4656
  case 0:
4371
- 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;
4657
+ 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;
4372
4658
  _context2.prev = 1;
4373
4659
  _context2.next = 4;
4374
4660
  return preflight$1({
4375
- accept: accept
4661
+ accept: accept,
4662
+ recover: recover
4376
4663
  });
4377
4664
 
4378
4665
  case 4:
@@ -4399,7 +4686,8 @@
4399
4686
  blacklist: blacklist,
4400
4687
  providers: providers,
4401
4688
  track: track,
4402
- fee: fee
4689
+ fee: fee,
4690
+ recover: recover
4403
4691
  }
4404
4692
  }, /*#__PURE__*/React__default["default"].createElement(UpdatableProvider, null, /*#__PURE__*/React__default["default"].createElement(ClosableProvider, {
4405
4693
  unmount: unmount
@@ -4408,7 +4696,7 @@
4408
4696
  container: container,
4409
4697
  connected: connected,
4410
4698
  unmount: unmount
4411
- }, /*#__PURE__*/React__default["default"].createElement(ConversionRateProvider, null, /*#__PURE__*/React__default["default"].createElement(ChangableAmountProvider, {
4699
+ }, /*#__PURE__*/React__default["default"].createElement(NavigateProvider, null, /*#__PURE__*/React__default["default"].createElement(ConversionRateProvider, null, /*#__PURE__*/React__default["default"].createElement(ChangableAmountProvider, {
4412
4700
  accept: accept
4413
4701
  }, /*#__PURE__*/React__default["default"].createElement(PaymentAmountRoutingProvider, {
4414
4702
  accept: accept,
@@ -4416,7 +4704,7 @@
4416
4704
  blacklist: blacklist,
4417
4705
  event: event,
4418
4706
  fee: fee
4419
- }, /*#__PURE__*/React__default["default"].createElement(TrackingProvider, {
4707
+ }, /*#__PURE__*/React__default["default"].createElement(TransactionTrackingProvider, null, /*#__PURE__*/React__default["default"].createElement(PaymentTrackingProvider, {
4420
4708
  document: ensureDocument(document)
4421
4709
  }, /*#__PURE__*/React__default["default"].createElement(PaymentProvider, {
4422
4710
  container: container,
@@ -4424,7 +4712,7 @@
4424
4712
  }, /*#__PURE__*/React__default["default"].createElement(PaymentValueProvider, null, /*#__PURE__*/React__default["default"].createElement(PaymentStack, {
4425
4713
  document: document,
4426
4714
  container: container
4427
- }), /*#__PURE__*/React__default["default"].createElement(PoweredBy, null))))))))))));
4715
+ }), /*#__PURE__*/React__default["default"].createElement(PoweredBy, null))))))))))))));
4428
4716
  };
4429
4717
  });
4430
4718
  return _context2.abrupt("return", {
@@ -4700,7 +4988,11 @@
4700
4988
  open = _useContext.open,
4701
4989
  close = _useContext.close;
4702
4990
 
4991
+ var _useContext2 = React.useContext(NavigateContext),
4992
+ setNavigate = _useContext2.setNavigate;
4993
+
4703
4994
  return /*#__PURE__*/React__default["default"].createElement(reactDialogStack.ReactDialogStack, {
4995
+ setNavigate: setNavigate,
4704
4996
  open: open,
4705
4997
  close: close,
4706
4998
  start: "SaleOverview",
@@ -4811,9 +5103,9 @@
4811
5103
  container: container,
4812
5104
  connected: connected,
4813
5105
  unmount: unmount
4814
- }, /*#__PURE__*/React__default["default"].createElement(ConversionRateProvider, null, /*#__PURE__*/React__default["default"].createElement(ChangableAmountProvider, {
5106
+ }, /*#__PURE__*/React__default["default"].createElement(NavigateProvider, null, /*#__PURE__*/React__default["default"].createElement(ConversionRateProvider, null, /*#__PURE__*/React__default["default"].createElement(ChangableAmountProvider, {
4815
5107
  accept: accept
4816
- }, /*#__PURE__*/React__default["default"].createElement(TrackingProvider, {
5108
+ }, /*#__PURE__*/React__default["default"].createElement(TransactionTrackingProvider, null, /*#__PURE__*/React__default["default"].createElement(PaymentTrackingProvider, {
4817
5109
  document: ensureDocument(document)
4818
5110
  }, /*#__PURE__*/React__default["default"].createElement(SaleRoutingProvider, {
4819
5111
  container: container,
@@ -4821,7 +5113,7 @@
4821
5113
  }, /*#__PURE__*/React__default["default"].createElement(SaleStack, {
4822
5114
  document: document,
4823
5115
  container: container
4824
- }), /*#__PURE__*/React__default["default"].createElement(PoweredBy, null))))))))));
5116
+ }), /*#__PURE__*/React__default["default"].createElement(PoweredBy, null))))))))))));
4825
5117
  };
4826
5118
  });
4827
5119
  return _context2.abrupt("return", {