@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.
@@ -1599,6 +1599,8 @@ class Dialog$1 extends react.Component {
1599
1599
  constructor(props) {
1600
1600
  super(props);
1601
1601
 
1602
+ this.handler = this.onKeyDown.bind(this);
1603
+
1602
1604
  this.state = {
1603
1605
  open: true,
1604
1606
  };
@@ -1632,22 +1634,22 @@ class Dialog$1 extends react.Component {
1632
1634
  this.setState({ open: true });
1633
1635
  }, 10);
1634
1636
  });
1635
- this.props.document.addEventListener('keydown', this.onKeyDown.bind(this), false);
1637
+ this.props.document.addEventListener('keydown', this.handler, true);
1636
1638
  }
1637
1639
 
1638
1640
  componentWillUnmount() {
1639
- this.props.document.addEventListener('keydown', this.onKeyDown.bind(this), false);
1641
+ this.props.document.removeEventListener('keydown', this.handler, true);
1640
1642
  }
1641
1643
 
1642
1644
  render() {
1643
1645
  const classNames = ['ReactDialog', this.state.open ? 'ReactDialogOpen' : ''];
1644
1646
  const style = ReactDialogStyle({ background: this.props.background });
1645
1647
  return (
1646
- react.createElement('div', { className: classNames.join(' '), __self: this, __source: {fileName: _jsxFileName$2, lineNumber: 54}}
1647
- , react.createElement('style', {__self: this, __source: {fileName: _jsxFileName$2, lineNumber: 55}}, style)
1648
- , react.createElement('div', { className: "ReactDialogRow", __self: this, __source: {fileName: _jsxFileName$2, lineNumber: 56}}
1649
- , react.createElement('div', { className: "ReactDialogCell", __self: this, __source: {fileName: _jsxFileName$2, lineNumber: 57}}
1650
- , react.createElement('div', { className: "ReactDialogBackground", onClick: this.onClickBackground.bind(this), __self: this, __source: {fileName: _jsxFileName$2, lineNumber: 58}} )
1648
+ react.createElement('div', { className: classNames.join(' '), __self: this, __source: {fileName: _jsxFileName$2, lineNumber: 56}}
1649
+ , react.createElement('style', {__self: this, __source: {fileName: _jsxFileName$2, lineNumber: 57}}, style)
1650
+ , react.createElement('div', { className: "ReactDialogRow", __self: this, __source: {fileName: _jsxFileName$2, lineNumber: 58}}
1651
+ , react.createElement('div', { className: "ReactDialogCell", __self: this, __source: {fileName: _jsxFileName$2, lineNumber: 59}}
1652
+ , react.createElement('div', { className: "ReactDialogBackground", onClick: this.onClickBackground.bind(this), __self: this, __source: {fileName: _jsxFileName$2, lineNumber: 60}} )
1651
1653
  , this.props.children
1652
1654
  )
1653
1655
  )
@@ -1767,6 +1769,10 @@ class ReactDialogStack extends react.Component {
1767
1769
  constructor(props) {
1768
1770
  super(props);
1769
1771
 
1772
+ if (props.setNavigate) {
1773
+ props.setNavigate(this.navigate.bind(this));
1774
+ }
1775
+
1770
1776
  this.state = {
1771
1777
  stack: [props.start],
1772
1778
  animating: false,
@@ -1881,15 +1887,15 @@ class ReactDialogStack extends react.Component {
1881
1887
  this.classForDirection(),
1882
1888
  ];
1883
1889
  return (
1884
- react.createElement('div', { key: index, className: ['ReactDialogStack'].concat(stackState).join(' '), __self: this, __source: {fileName: _jsxFileName$1, lineNumber: 127}}
1885
- , react.createElement('div', { className: "ReactDialogStackRow", __self: this, __source: {fileName: _jsxFileName$1, lineNumber: 128}}
1886
- , react.createElement('div', { className: "ReactDialogStackCell", onClick: this.onClick.bind(this), __self: this, __source: {fileName: _jsxFileName$1, lineNumber: 129}}
1890
+ react.createElement('div', { key: index, className: ['ReactDialogStack'].concat(stackState).join(' '), __self: this, __source: {fileName: _jsxFileName$1, lineNumber: 131}}
1891
+ , react.createElement('div', { className: "ReactDialogStackRow", __self: this, __source: {fileName: _jsxFileName$1, lineNumber: 132}}
1892
+ , react.createElement('div', { className: "ReactDialogStackCell", onClick: this.onClick.bind(this), __self: this, __source: {fileName: _jsxFileName$1, lineNumber: 133}}
1887
1893
  , react.createElement(NavigateStackContext.Provider, {
1888
- value: { navigate: this.navigate.bind(this), set: this.set.bind(this) }, __self: this, __source: {fileName: _jsxFileName$1, lineNumber: 130}}
1894
+ value: { navigate: this.navigate.bind(this), set: this.set.bind(this) }, __self: this, __source: {fileName: _jsxFileName$1, lineNumber: 134}}
1889
1895
 
1890
- , react.createElement(CloseStackContext.Provider, { value: this.close.bind(this), __self: this, __source: {fileName: _jsxFileName$1, lineNumber: 133}}
1891
- , react.createElement(StackContext.Provider, { value: this.state.stack, __self: this, __source: {fileName: _jsxFileName$1, lineNumber: 134}}
1892
- , react.createElement('div', { className: "ReactDialogAnimation", __self: this, __source: {fileName: _jsxFileName$1, lineNumber: 135}}, this.props.dialogs[route])
1896
+ , react.createElement(CloseStackContext.Provider, { value: this.close.bind(this), __self: this, __source: {fileName: _jsxFileName$1, lineNumber: 137}}
1897
+ , react.createElement(StackContext.Provider, { value: this.state.stack, __self: this, __source: {fileName: _jsxFileName$1, lineNumber: 138}}
1898
+ , react.createElement('div', { className: "ReactDialogAnimation", __self: this, __source: {fileName: _jsxFileName$1, lineNumber: 139}}, this.props.dialogs[route])
1893
1899
  )
1894
1900
  )
1895
1901
  )
@@ -1932,9 +1938,9 @@ class ReactDialogStack extends react.Component {
1932
1938
  open: this.props.open,
1933
1939
  document: this.props.document,
1934
1940
  container: this.props.container,
1935
- background: this.props.background, __self: this, __source: {fileName: _jsxFileName$1, lineNumber: 173}}
1941
+ background: this.props.background, __self: this, __source: {fileName: _jsxFileName$1, lineNumber: 177}}
1936
1942
 
1937
- , react.createElement('style', {__self: this, __source: {fileName: _jsxFileName$1, lineNumber: 180}}, ReactDialogStackStyle())
1943
+ , react.createElement('style', {__self: this, __source: {fileName: _jsxFileName$1, lineNumber: 184}}, ReactDialogStackStyle())
1938
1944
  , this.renderStack()
1939
1945
  )
1940
1946
  )
@@ -48407,7 +48413,7 @@ function parseUnits$2(value, unitName) {
48407
48413
  function _optionalChain$5(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
48408
48414
  class Transaction {
48409
48415
 
48410
- constructor({ blockchain, from, nonce, to, api, method, params, value, sent, confirmed, ensured, failed }) {
48416
+ constructor({ blockchain, from, nonce, to, api, method, params, value, sent, confirmed, failed }) {
48411
48417
 
48412
48418
  this.blockchain = blockchain;
48413
48419
  this.from = from;
@@ -48419,10 +48425,8 @@ class Transaction {
48419
48425
  this.value = _optionalChain$5([Transaction, 'access', _ => _.bigNumberify, 'call', _2 => _2(value, blockchain), 'optionalAccess', _3 => _3.toString, 'call', _4 => _4()]);
48420
48426
  this.sent = sent;
48421
48427
  this.confirmed = confirmed;
48422
- this.ensured = ensured;
48423
48428
  this.failed = failed;
48424
48429
  this._confirmed = false;
48425
- this._ensured = false;
48426
48430
  this._failed = false;
48427
48431
  }
48428
48432
 
@@ -48469,19 +48473,6 @@ class Transaction {
48469
48473
  })
48470
48474
  }
48471
48475
 
48472
- ensurance() {
48473
- if (this._ensured) {
48474
- return Promise.resolve(this)
48475
- }
48476
- return new Promise((resolve, reject) => {
48477
- let originalEnsured = this.ensured;
48478
- this.ensured = () => {
48479
- if (originalEnsured) originalEnsured(this);
48480
- resolve(this);
48481
- };
48482
- })
48483
- }
48484
-
48485
48476
  failure() {
48486
48477
  if (this._failed) {
48487
48478
  return Promise.resolve(this)
@@ -48526,15 +48517,22 @@ const sendTransaction$1 = async ({ transaction, wallet })=> {
48526
48517
  transaction._confirmed = true;
48527
48518
  if (transaction.confirmed) transaction.confirmed(transaction);
48528
48519
  }).catch((error)=>{
48529
- transaction._failed = true;
48530
- if(transaction.failed) transaction.failed(transaction, error);
48531
- });
48532
- sentTransaction.wait(12).then(() => {
48533
- transaction._ensured = true;
48534
- if (transaction.ensured) transaction.ensured(transaction);
48535
- }).catch((error)=>{
48536
- transaction._failed = true;
48537
- if(transaction.failed) transaction.failed(transaction, error);
48520
+ if(error && error.code && error.code == 'TRANSACTION_REPLACED') {
48521
+ if(error.replacement && error.replacement.hash) {
48522
+ transaction.id = error.replacement.hash;
48523
+ transaction.url = Blockchain.findByName(transaction.blockchain).explorerUrlFor({ transaction });
48524
+ }
48525
+ if(error.replacement && error.replacement.hash && error.receipt && error.receipt.status == 1) {
48526
+ transaction._confirmed = true;
48527
+ if (transaction.confirmed) transaction.confirmed(transaction);
48528
+ } else if(error.replacement && error.replacement.hash && error.receipt && error.receipt.status == 0) {
48529
+ transaction._failed = true;
48530
+ if(transaction.failed) transaction.failed(transaction, error);
48531
+ }
48532
+ } else {
48533
+ transaction._failed = true;
48534
+ if(transaction.failed) transaction.failed(transaction, error);
48535
+ }
48538
48536
  });
48539
48537
  } else {
48540
48538
  throw('Submitting transaction failed!')
@@ -48775,15 +48773,20 @@ const sendTransaction = async ({ transaction, wallet })=> {
48775
48773
  transaction._confirmed = true;
48776
48774
  if (transaction.confirmed) transaction.confirmed(transaction);
48777
48775
  }).catch((error)=>{
48778
- transaction._failed = true;
48779
- if(transaction.failed) transaction.failed(transaction, error);
48780
- });
48781
- sentTransaction.wait(12).then(() => {
48782
- transaction._ensured = true;
48783
- if (transaction.ensured) transaction.ensured(transaction);
48784
- }).catch((error)=>{
48785
- transaction._failed = true;
48786
- if(transaction.failed) transaction.failed(transaction, error);
48776
+ if(error && error.code && error.code == 'TRANSACTION_REPLACED') {
48777
+ if(error.replacement && error.replacement.hash && error.receipt && error.receipt.status == 1) {
48778
+ transaction.id = error.replacement.hash;
48779
+ transaction._confirmed = true;
48780
+ if (transaction.confirmed) transaction.confirmed(transaction);
48781
+ } else if(error.replacement && error.replacement.hash && error.receipt && error.receipt.status == 0) {
48782
+ transaction.id = error.replacement.hash;
48783
+ transaction._failed = true;
48784
+ if(transaction.failed) transaction.failed(transaction, error);
48785
+ }
48786
+ } else {
48787
+ transaction._failed = true;
48788
+ if(transaction.failed) transaction.failed(transaction, error);
48789
+ }
48787
48790
  });
48788
48791
  }
48789
48792
  } else {
@@ -49481,7 +49484,7 @@ var CardStyle = (function (style) {
49481
49484
  });
49482
49485
 
49483
49486
  var DialogStyle = (function (style) {
49484
- 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 ";
49487
+ 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 ";
49485
49488
  });
49486
49489
 
49487
49490
  var FontStyle = (function (style) {
@@ -49881,7 +49884,7 @@ var round$1 = (function (input) {
49881
49884
  focusToFixed = parseFloat(_float).toFixed(1).replace('.', '');
49882
49885
  }
49883
49886
 
49884
- if (focusToFixed.toString()[0] != 0 && focusToFixed.toString().length > 2) {
49887
+ if (focusToFixed.toString()[0] != "0" && focusToFixed.toString().length > 2) {
49885
49888
  return parseInt(inputAsFloat.toFixed(0));
49886
49889
  } else {
49887
49890
  return parseFloat(digitsAfterDecimal.replace(/\d{3}$/, focusToFixed));
@@ -61719,16 +61722,17 @@ var ChangableAmountProvider = (function (props) {
61719
61722
  });
61720
61723
  };
61721
61724
 
61722
- var _useState = react.useState(configurationsMissAmounts(props.accept)),
61725
+ var _useContext = react.useContext(ConfigurationContext),
61726
+ amountConfiguration = _useContext.amount,
61727
+ recover = _useContext.recover;
61728
+
61729
+ var _useState = react.useState(recover == undefined ? configurationsMissAmounts(props.accept) : false),
61723
61730
  _useState2 = _slicedToArray(_useState, 2),
61724
61731
  amountsMissing = _useState2[0],
61725
61732
  setAmountsMissing = _useState2[1];
61726
61733
 
61727
- var _useContext = react.useContext(WalletContext),
61728
- account = _useContext.account;
61729
-
61730
- var _useContext2 = react.useContext(ConfigurationContext),
61731
- amountConfiguration = _useContext2.amount;
61734
+ var _useContext2 = react.useContext(WalletContext),
61735
+ account = _useContext2.account;
61732
61736
 
61733
61737
  var _useContext3 = react.useContext(ConversionRateContext),
61734
61738
  conversionRate = _useContext3.conversionRate;
@@ -61757,8 +61761,12 @@ var ChangableAmountProvider = (function (props) {
61757
61761
  setMaxAmount = _useState10[1];
61758
61762
 
61759
61763
  react.useEffect(function () {
61764
+ if (recover) {
61765
+ return;
61766
+ }
61767
+
61760
61768
  setAmountsMissing(configurationsMissAmounts(props.accept));
61761
- }, [props.accept]);
61769
+ }, [props.accept, recover]);
61762
61770
 
61763
61771
  var getAmounts = function getAmounts() {
61764
61772
  return new Promise(function (resolve, reject) {
@@ -61794,6 +61802,10 @@ var ChangableAmountProvider = (function (props) {
61794
61802
  };
61795
61803
 
61796
61804
  react.useEffect(function () {
61805
+ if (recover) {
61806
+ return;
61807
+ }
61808
+
61797
61809
  if (amountsMissing && account && conversionRate) {
61798
61810
  getAmounts().then(function (amounts) {
61799
61811
  setAcceptWithAmount(props.accept.map(function (configuration, index) {
@@ -61812,7 +61824,7 @@ var ChangableAmountProvider = (function (props) {
61812
61824
  }));
61813
61825
  })["catch"](setError);
61814
61826
  }
61815
- }, [amountsMissing, account, conversionRate, amount]);
61827
+ }, [amountsMissing, account, conversionRate, amount, recover]);
61816
61828
  react.useEffect(function () {
61817
61829
  if (amountsMissing && maxRoute) {
61818
61830
  maxRoute.fromToken.readable(maxRoute.fromBalance).then(function (readableMaxAmount) {
@@ -62383,6 +62395,8 @@ var ConversionRateProvider = (function (props) {
62383
62395
 
62384
62396
  var DonationRoutingContext = /*#__PURE__*/react.createContext();
62385
62397
 
62398
+ var NavigateContext = /*#__PURE__*/react.createContext();
62399
+
62386
62400
  var QuestionsGraphic = "data:image/png;base64,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";
62387
62401
 
62388
62402
  var NoPaymentMethodFoundDialog = (function () {
@@ -62418,7 +62432,9 @@ var PaymentContext = /*#__PURE__*/react.createContext();
62418
62432
 
62419
62433
  var PaymentRoutingContext = /*#__PURE__*/react.createContext();
62420
62434
 
62421
- var TrackingContext = /*#__PURE__*/react.createContext();
62435
+ var PaymentTrackingContext = /*#__PURE__*/react.createContext();
62436
+
62437
+ var TransactionTrackingContext = /*#__PURE__*/react.createContext();
62422
62438
 
62423
62439
  var PaymentProvider = (function (props) {
62424
62440
  var _useContext = react.useContext(ErrorContext),
@@ -62426,11 +62442,13 @@ var PaymentProvider = (function (props) {
62426
62442
 
62427
62443
  var _useContext2 = react.useContext(ConfigurationContext),
62428
62444
  _sent = _useContext2.sent,
62429
- _confirmed = _useContext2.confirmed,
62430
- _failed = _useContext2.failed;
62445
+ confirmed = _useContext2.confirmed,
62446
+ failed = _useContext2.failed,
62447
+ recover = _useContext2.recover;
62431
62448
 
62432
62449
  var _useContext3 = react.useContext(PaymentRoutingContext),
62433
- selectedRoute = _useContext3.selectedRoute;
62450
+ selectedRoute = _useContext3.selectedRoute,
62451
+ getPaymentRoutes = _useContext3.getPaymentRoutes;
62434
62452
 
62435
62453
  var _useContext4 = react.useContext(ClosableContext),
62436
62454
  open = _useContext4.open,
@@ -62443,13 +62461,20 @@ var PaymentProvider = (function (props) {
62443
62461
  var _useContext6 = react.useContext(UpdatableContext),
62444
62462
  setUpdatable = _useContext6.setUpdatable;
62445
62463
 
62446
- var _useContext7 = react.useContext(WalletContext),
62447
- wallet = _useContext7.wallet;
62464
+ var _useContext7 = react.useContext(NavigateContext),
62465
+ navigate = _useContext7.navigate;
62448
62466
 
62449
- var _useContext8 = react.useContext(TrackingContext),
62450
- release = _useContext8.release,
62451
- tracking = _useContext8.tracking,
62452
- initializeTracking = _useContext8.initializeTracking;
62467
+ var _useContext8 = react.useContext(WalletContext),
62468
+ wallet = _useContext8.wallet;
62469
+
62470
+ var _useContext9 = react.useContext(PaymentTrackingContext),
62471
+ release = _useContext9.release,
62472
+ tracking = _useContext9.tracking,
62473
+ initializeTracking = _useContext9.initializeTracking;
62474
+
62475
+ var _useContext10 = react.useContext(TransactionTrackingContext),
62476
+ foundTransaction = _useContext10.foundTransaction,
62477
+ initializeTransactionTracking = _useContext10.initializeTracking;
62453
62478
 
62454
62479
  var _useState = react.useState(),
62455
62480
  _useState2 = _slicedToArray(_useState, 2),
@@ -62471,52 +62496,59 @@ var PaymentProvider = (function (props) {
62471
62496
  paymentState = _useState8[0],
62472
62497
  setPaymentState = _useState8[1];
62473
62498
 
62499
+ var paymentConfirmed = function paymentConfirmed(transaction) {
62500
+ if (tracking != true) {
62501
+ setClosable(true);
62502
+ }
62503
+
62504
+ setPaymentState('confirmed');
62505
+
62506
+ if (confirmed) {
62507
+ confirmed(transaction);
62508
+ }
62509
+ };
62510
+
62511
+ var paymentFailed = function paymentFailed(transaction, error) {
62512
+ if (failed) {
62513
+ failed(transaction, error);
62514
+ }
62515
+
62516
+ setPaymentState('initialized');
62517
+ setPayment(null);
62518
+ setClosable(true);
62519
+ setUpdatable(true);
62520
+ getPaymentRoutes({});
62521
+ navigate('PaymentError');
62522
+ };
62523
+
62474
62524
  var pay = /*#__PURE__*/function () {
62475
- var _ref2 = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee(_ref) {
62476
- var navigate, currentBlock;
62525
+ var _ref = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee() {
62526
+ var currentBlock;
62477
62527
  return regenerator.wrap(function _callee$(_context) {
62478
62528
  while (1) {
62479
62529
  switch (_context.prev = _context.next) {
62480
62530
  case 0:
62481
- navigate = _ref.navigate;
62482
62531
  setClosable(false);
62483
62532
  setPaymentState('paying');
62484
62533
  setUpdatable(false);
62485
- _context.next = 6;
62534
+ _context.next = 5;
62486
62535
  return request({
62487
62536
  blockchain: payment.route.transaction.blockchain,
62488
62537
  method: 'latestBlockNumber'
62489
62538
  });
62490
62539
 
62491
- case 6:
62540
+ case 5:
62492
62541
  currentBlock = _context.sent;
62493
62542
  wallet.sendTransaction(Object.assign({}, payment.route.transaction, {
62494
62543
  sent: function sent(transaction) {
62544
+ initializeTransactionTracking(transaction, currentBlock);
62545
+
62495
62546
  if (_sent) {
62496
62547
  _sent(transaction);
62497
62548
  }
62498
62549
  },
62499
- confirmed: function confirmed(transaction) {
62500
- if (tracking != true) {
62501
- setClosable(true);
62502
- }
62503
-
62504
- setPaymentState('confirmed');
62505
-
62506
- if (_confirmed) {
62507
- _confirmed(transaction);
62508
- }
62509
- },
62510
- failed: function failed(transaction, error) {
62511
- if (_failed) {
62512
- _failed(transaction, error);
62513
- }
62514
-
62515
- setPaymentState('initialized');
62516
- setClosable(true);
62517
- setUpdatable(true);
62518
- navigate('PaymentError');
62519
- }
62550
+ confirmed: paymentConfirmed,
62551
+ failed: paymentFailed
62520
62552
  })).then(function (sentTransaction) {
62521
62553
  if (tracking) {
62522
62554
  initializeTracking(sentTransaction, currentBlock, payment.route);
@@ -62534,7 +62566,7 @@ var PaymentProvider = (function (props) {
62534
62566
  }
62535
62567
  });
62536
62568
 
62537
- case 8:
62569
+ case 7:
62538
62570
  case "end":
62539
62571
  return _context.stop();
62540
62572
  }
@@ -62542,8 +62574,8 @@ var PaymentProvider = (function (props) {
62542
62574
  }, _callee);
62543
62575
  }));
62544
62576
 
62545
- return function pay(_x) {
62546
- return _ref2.apply(this, arguments);
62577
+ return function pay() {
62578
+ return _ref.apply(this, arguments);
62547
62579
  };
62548
62580
  }();
62549
62581
 
@@ -62571,19 +62603,73 @@ var PaymentProvider = (function (props) {
62571
62603
  setPaymentState('confirmed');
62572
62604
  }
62573
62605
  }, [release]);
62606
+ react.useEffect(function () {
62607
+ if (recover) {
62608
+ setClosable(false);
62609
+ setUpdatable(false);
62610
+ setPaymentState('paying');
62611
+ setTransaction({
62612
+ blockchain: recover.blockchain,
62613
+ id: recover.transaction,
62614
+ url: Blockchain.findByName(recover.blockchain).explorerUrlFor({
62615
+ transaction: {
62616
+ id: recover.transaction
62617
+ }
62618
+ })
62619
+ });
62620
+ var paymentToken = new Token({
62621
+ blockchain: recover.blockchain,
62622
+ address: recover.token
62623
+ });
62624
+ Promise.all([paymentToken.name(), paymentToken.symbol()]).then(function (_ref2) {
62625
+ var _ref3 = _slicedToArray(_ref2, 2),
62626
+ name = _ref3[0],
62627
+ symbol = _ref3[1];
62628
+
62629
+ setPayment({
62630
+ blockchain: recover.blockchain,
62631
+ token: recover.token,
62632
+ name: name,
62633
+ symbol: symbol.toUpperCase(),
62634
+ amount: recover.amount
62635
+ });
62636
+ })["catch"](setError);
62637
+ }
62638
+ }, [recover]);
62639
+ react.useEffect(function () {
62640
+ if (foundTransaction && foundTransaction.id && foundTransaction.status) {
62641
+ var newTransaction;
62642
+
62643
+ if (foundTransaction.id.toLowerCase() != transaction.id.toLowerCase()) {
62644
+ newTransaction = Object.assign({}, transaction, {
62645
+ id: foundTransaction.id,
62646
+ url: Blockchain.findByName(transaction.blockchain).explorerUrlFor({
62647
+ transaction: foundTransaction
62648
+ })
62649
+ });
62650
+ setTransaction(newTransaction);
62651
+ }
62652
+
62653
+ if (foundTransaction.status == 'success') {
62654
+ paymentConfirmed(newTransaction || transaction);
62655
+ } else if (foundTransaction.status == 'failed') {
62656
+ paymentFailed(newTransaction || transaction);
62657
+ }
62658
+ }
62659
+ }, [foundTransaction, transaction]);
62574
62660
  react.useEffect(function () {
62575
62661
  if (selectedRoute) {
62576
62662
  var fromToken = selectedRoute.fromToken;
62577
- selectedRoute.transaction.params;
62578
- Promise.all([fromToken.name(), fromToken.symbol(), fromToken.readable(selectedRoute.fromAmount)]).then(function (_ref3) {
62579
- var _ref4 = _slicedToArray(_ref3, 3),
62580
- name = _ref4[0],
62581
- symbol = _ref4[1],
62582
- amount = _ref4[2];
62663
+ Promise.all([fromToken.name(), fromToken.symbol(), fromToken.readable(selectedRoute.fromAmount)]).then(function (_ref4) {
62664
+ var _ref5 = _slicedToArray(_ref4, 3),
62665
+ name = _ref5[0],
62666
+ symbol = _ref5[1],
62667
+ amount = _ref5[2];
62583
62668
 
62584
62669
  setPayment({
62670
+ blockchain: selectedRoute.blockchain,
62585
62671
  route: selectedRoute,
62586
- token: selectedRoute.fromToken.address,
62672
+ token: fromToken.address,
62587
62673
  name: name,
62588
62674
  symbol: symbol.toUpperCase(),
62589
62675
  amount: amount
@@ -67924,6 +68010,9 @@ var PaymentRoutingProvider = (function (props) {
67924
68010
  var _useContext2 = react.useContext(UpdatableContext),
67925
68011
  updatable = _useContext2.updatable;
67926
68012
 
68013
+ var _useContext3 = react.useContext(ConfigurationContext),
68014
+ recover = _useContext3.recover;
68015
+
67927
68016
  var prepareAcceptedPayments = function prepareAcceptedPayments(accept) {
67928
68017
  var toAddress = _typeof(accept.receiver) == 'object' ? accept.receiver.address : accept.receiver;
67929
68018
  var toContract = _typeof(accept.receiver) == 'object' ? accept.receiver : undefined;
@@ -68051,7 +68140,7 @@ var PaymentRoutingProvider = (function (props) {
68051
68140
  };
68052
68141
  }, [reloadCount, allRoutes, selectedRoute, updatable]);
68053
68142
  react.useEffect(function () {
68054
- if (account && props.accept) {
68143
+ if (account && props.accept && recover == undefined) {
68055
68144
  setAllRoutes(undefined);
68056
68145
  setSelectedRoute(undefined);
68057
68146
  getPaymentRoutes({});
@@ -68064,6 +68153,7 @@ var PaymentRoutingProvider = (function (props) {
68064
68153
  value: {
68065
68154
  selectedRoute: selectedRoute,
68066
68155
  setSelectedRoute: setSelectedRoute,
68156
+ getPaymentRoutes: getPaymentRoutes,
68067
68157
  allRoutes: allRoutes,
68068
68158
  setAllRoutes: setAllRoutes
68069
68159
  }
@@ -68189,7 +68279,7 @@ var DonationRoutingProvider = (function (props) {
68189
68279
  });
68190
68280
 
68191
68281
  var format = (function (input) {
68192
- var _float = parseFloat(input);
68282
+ var _float = round$1(input);
68193
68283
 
68194
68284
  var floatToString = _float.toString();
68195
68285
 
@@ -70296,7 +70386,7 @@ var Footer = (function () {
70296
70386
  amount = _useContext2.amount;
70297
70387
  _useContext2.amountsMissing;
70298
70388
 
70299
- var _useContext3 = react.useContext(TrackingContext),
70389
+ var _useContext3 = react.useContext(PaymentTrackingContext),
70300
70390
  tracking = _useContext3.tracking,
70301
70391
  release = _useContext3.release,
70302
70392
  forwardTo = _useContext3.forwardTo,
@@ -70313,8 +70403,8 @@ var Footer = (function () {
70313
70403
  var _useContext5 = react.useContext(PaymentValueContext),
70314
70404
  paymentValue = _useContext5.paymentValue;
70315
70405
 
70316
- var _useContext6 = react.useContext(NavigateStackContext),
70317
- navigate = _useContext6.navigate;
70406
+ var _useContext6 = react.useContext(NavigateStackContext);
70407
+ _useContext6.navigate;
70318
70408
 
70319
70409
  var _useContext7 = react.useContext(ClosableContext),
70320
70410
  close = _useContext7.close;
@@ -70420,7 +70510,7 @@ var Footer = (function () {
70420
70510
  };
70421
70511
 
70422
70512
  var approvalButton = function approvalButton() {
70423
- if (!payment.route.approvalRequired || payment.route.directTransfer) {
70513
+ if (payment.route == undefined || !payment.route.approvalRequired || payment.route.directTransfer) {
70424
70514
  return null;
70425
70515
  } else if (paymentState == 'initialized') {
70426
70516
  return /*#__PURE__*/react.createElement("div", {
@@ -70457,7 +70547,7 @@ var Footer = (function () {
70457
70547
  displayedAmount = "".concat(payment.symbol, " ").concat(payment.amount);
70458
70548
  }
70459
70549
 
70460
- if (paymentState == 'initialized' || paymentState == 'approving') {
70550
+ if ((paymentState == 'initialized' || paymentState == 'approving') && payment.route) {
70461
70551
  return /*#__PURE__*/react.createElement("button", {
70462
70552
  className: ["ButtonPrimary", payment.route.approvalRequired && !payment.route.directTransfer ? 'disabled' : ''].join(' '),
70463
70553
  onClick: function onClick() {
@@ -70465,9 +70555,7 @@ var Footer = (function () {
70465
70555
  return;
70466
70556
  }
70467
70557
 
70468
- pay({
70469
- navigate: navigate
70470
- });
70558
+ pay();
70471
70559
  }
70472
70560
  }, "Pay ", displayedAmount);
70473
70561
  } else if (paymentState == 'paying') {
@@ -70608,8 +70696,11 @@ var PaymentErrorDialog = (function () {
70608
70696
  var _useContext2 = react.useContext(PaymentContext),
70609
70697
  transaction = _useContext2.transaction;
70610
70698
 
70699
+ var _useContext3 = react.useContext(ConfigurationContext),
70700
+ recover = _useContext3.recover;
70701
+
70611
70702
  return /*#__PURE__*/react.createElement(Dialog, {
70612
- stacked: true,
70703
+ stacked: recover ? false : true,
70613
70704
  header: /*#__PURE__*/react.createElement("div", {
70614
70705
  className: "PaddingTopS PaddingLeftM PaddingRightM"
70615
70706
  }),
@@ -70622,7 +70713,7 @@ var PaymentErrorDialog = (function () {
70622
70713
  className: "LineHeightL Text FontSizeL PaddingTopS FontWeightBold"
70623
70714
  }, "Payment Failed"), /*#__PURE__*/react.createElement("div", {
70624
70715
  className: "Text PaddingTopS PaddingBottomS PaddingLeftS PaddingRightS"
70625
- }, /*#__PURE__*/react.createElement("strong", {
70716
+ }, recover == undefined && /*#__PURE__*/react.createElement("strong", {
70626
70717
  className: "FontSizeM"
70627
70718
  }, "Unfortunately executing your payment failed. You can go back and try again."), transaction && /*#__PURE__*/react.createElement("div", {
70628
70719
  className: "PaddingTopS"
@@ -70635,7 +70726,7 @@ var PaymentErrorDialog = (function () {
70635
70726
  }, "View on explorer")))),
70636
70727
  footer: /*#__PURE__*/react.createElement("div", {
70637
70728
  className: "PaddingTopXS PaddingRightM PaddingLeftM PaddingBottomM"
70638
- }, /*#__PURE__*/react.createElement("button", {
70729
+ }, recover == undefined && /*#__PURE__*/react.createElement("button", {
70639
70730
  className: "ButtonPrimary",
70640
70731
  onClick: function onClick() {
70641
70732
  return navigate('back');
@@ -70691,7 +70782,11 @@ var DonationStack = (function (props) {
70691
70782
  open = _useContext.open,
70692
70783
  close = _useContext.close;
70693
70784
 
70785
+ var _useContext2 = react.useContext(NavigateContext),
70786
+ setNavigate = _useContext2.setNavigate;
70787
+
70694
70788
  return /*#__PURE__*/react.createElement(ReactDialogStack, {
70789
+ setNavigate: setNavigate,
70695
70790
  open: open,
70696
70791
  close: close,
70697
70792
  start: "DonationOverview",
@@ -70707,7 +70802,28 @@ var DonationStack = (function (props) {
70707
70802
  });
70708
70803
  });
70709
70804
 
70710
- var TrackingProvider = (function (props) {
70805
+ var NavigateProvider = (function (props) {
70806
+ var navigator;
70807
+
70808
+ var setNavigate = function setNavigate(_navigator) {
70809
+ navigator = _navigator;
70810
+ };
70811
+
70812
+ var navigate = function navigate(dialog) {
70813
+ if (navigator) {
70814
+ navigator(dialog);
70815
+ }
70816
+ };
70817
+
70818
+ return /*#__PURE__*/react.createElement(NavigateContext.Provider, {
70819
+ value: {
70820
+ navigate: navigate,
70821
+ setNavigate: setNavigate
70822
+ }
70823
+ }, props.children);
70824
+ });
70825
+
70826
+ var PaymentTrackingProvider = (function (props) {
70711
70827
  var _useContext = react.useContext(ErrorContext),
70712
70828
  errorCallback = _useContext.errorCallback;
70713
70829
 
@@ -70801,14 +70917,14 @@ var TrackingProvider = (function (props) {
70801
70917
 
70802
70918
  var retryStartTracking = function retryStartTracking(transaction, afterBlock, paymentRoute, attempt) {
70803
70919
  attempt = parseInt(attempt || 1, 10);
70804
- console.log('RETRY TRACKING ATTEMPT ', attempt);
70920
+ console.log('RETRYING PAYMENT TRACKING ATTEMPT ', attempt);
70805
70921
 
70806
70922
  if (attempt < 3) {
70807
70923
  setTimeout(function () {
70808
70924
  startTracking(transaction, afterBlock, paymentRoute, attempt + 1);
70809
70925
  }, 3000);
70810
70926
  } else {
70811
- console.log('TRACKING FAILED AFTER 3 ATTEMPTS!');
70927
+ console.log('PAYMENT TRACKING FAILED AFTER 3 ATTEMPTS!');
70812
70928
  setTrackingFailed(true);
70813
70929
 
70814
70930
  if (typeof errorCallback == 'function') {
@@ -70823,6 +70939,9 @@ var TrackingProvider = (function (props) {
70823
70939
  if (track.endpoint) {
70824
70940
  return fetch(track.endpoint, {
70825
70941
  method: 'POST',
70942
+ headers: {
70943
+ 'Content-Type': 'application/json'
70944
+ },
70826
70945
  body: JSON.stringify(payment)
70827
70946
  });
70828
70947
  } else if (track.method) {
@@ -70842,12 +70961,12 @@ var TrackingProvider = (function (props) {
70842
70961
  to_token: paymentRoute.toToken.address
70843
70962
  }).then(function (response) {
70844
70963
  if (response.status == 200) {
70845
- console.log('TRACKING INITIALIZED');
70964
+ console.log('PAYMENT TRACKING INITIALIZED');
70846
70965
  } else {
70847
70966
  retryStartTracking(transaction, afterBlock, paymentRoute, attempt);
70848
70967
  }
70849
70968
  })["catch"](function (error) {
70850
- console.log('TRACKING FAILED', error);
70969
+ console.log('PAYMENT TRACKING FAILED', error);
70851
70970
  retryStartTracking(transaction, afterBlock, paymentRoute, attempt);
70852
70971
  });
70853
70972
  };
@@ -70884,6 +71003,9 @@ var TrackingProvider = (function (props) {
70884
71003
  if (track.poll.endpoint) {
70885
71004
  fetch(track.poll.endpoint, {
70886
71005
  method: 'POST',
71006
+ headers: {
71007
+ 'Content-Type': 'application/json'
71008
+ },
70887
71009
  body: JSON.stringify(payment)
70888
71010
  }).then(handleResponse);
70889
71011
  } else if (track.poll.method) {
@@ -70912,7 +71034,7 @@ var TrackingProvider = (function (props) {
70912
71034
  startTracking(transaction, afterBlock, paymentRoute);
70913
71035
  };
70914
71036
 
70915
- return /*#__PURE__*/react.createElement(TrackingContext.Provider, {
71037
+ return /*#__PURE__*/react.createElement(PaymentTrackingContext.Provider, {
70916
71038
  value: {
70917
71039
  tracking: tracking,
70918
71040
  initializeTracking: initializeTracking,
@@ -70923,6 +71045,154 @@ var TrackingProvider = (function (props) {
70923
71045
  }, props.children);
70924
71046
  });
70925
71047
 
71048
+ var TransactionTrackingProvider = (function (props) {
71049
+ var _useState = react.useState(),
71050
+ _useState2 = _slicedToArray(_useState, 2),
71051
+ givenTransaction = _useState2[0],
71052
+ setGivenTransaction = _useState2[1];
71053
+
71054
+ var _useState3 = react.useState(),
71055
+ _useState4 = _slicedToArray(_useState3, 2),
71056
+ foundTransaction = _useState4[0],
71057
+ setFoundTransaction = _useState4[1];
71058
+
71059
+ var _useState5 = react.useState(false),
71060
+ _useState6 = _slicedToArray(_useState5, 2),
71061
+ polling = _useState6[0],
71062
+ setPolling = _useState6[1];
71063
+
71064
+ var _useContext = react.useContext(ErrorContext);
71065
+ _useContext.errorCallback;
71066
+
71067
+ var _useContext2 = react.useContext(ConfigurationContext),
71068
+ recover = _useContext2.recover;
71069
+
71070
+ react.useEffect(function () {
71071
+ if (polling) {
71072
+ var poll = function poll() {
71073
+ fetch("https://api.depay.fi/v2/transactions/".concat(givenTransaction.blockchain, "/").concat(givenTransaction.from.toLowerCase(), "/").concat(givenTransaction.nonce)).then(function (response) {
71074
+ if (response.status == 200) {
71075
+ response.json().then(function (data) {
71076
+ if (data.status != 'pending') {
71077
+ setFoundTransaction({
71078
+ id: data.external_id,
71079
+ status: data.status
71080
+ });
71081
+ setPolling(false);
71082
+ }
71083
+ });
71084
+ }
71085
+ });
71086
+ };
71087
+
71088
+ var pollingInterval = setInterval(poll, 5000);
71089
+ poll();
71090
+ return function () {
71091
+ clearInterval(pollingInterval);
71092
+ };
71093
+ }
71094
+ }, [polling]);
71095
+
71096
+ var createTracking = function createTracking(transaction, afterBlock, attempt) {
71097
+ if (attempt > 3) {
71098
+ console.log('TRANSACTION TRACKING FAILED AFTER 3 ATTEMPTS!');
71099
+ return;
71100
+ }
71101
+
71102
+ fetch('https://api.depay.fi/v2/transactions', {
71103
+ method: 'POST',
71104
+ headers: {
71105
+ 'X-Api-Key': apiKey,
71106
+ 'Content-Type': 'application/json'
71107
+ },
71108
+ body: JSON.stringify({
71109
+ id: transaction.id,
71110
+ after_block: afterBlock,
71111
+ blockchain: transaction.blockchain,
71112
+ sender: transaction.from.toLowerCase(),
71113
+ nonce: transaction.nonce
71114
+ })
71115
+ }).then(function (response) {
71116
+ if (response.status == 200 || response.status == 201) {
71117
+ console.log('TRANSACTION TRACKING INITIALIZED');
71118
+ } else {
71119
+ console.log('TRANSACTION TRACKING FAILED', response);
71120
+ setTimeout(function () {
71121
+ createTracking(transaction, afterBlock, attempt + 1);
71122
+ }, 3000);
71123
+ }
71124
+ })["catch"](function (error) {
71125
+ console.log('TRANSACTION TRACKING FAILED', error);
71126
+ setTimeout(function () {
71127
+ createTracking(transaction, afterBlock, attempt + 1);
71128
+ }, 3000);
71129
+ });
71130
+ };
71131
+
71132
+ var openSocket = function openSocket(transaction) {
71133
+ var socket = new WebSocket('wss://integrate.depay.fi/cable');
71134
+
71135
+ socket.onopen = function (event) {
71136
+ var msg = {
71137
+ command: 'subscribe',
71138
+ identifier: JSON.stringify({
71139
+ blockchain: transaction.blockchain,
71140
+ sender: transaction.from.toLowerCase(),
71141
+ nonce: transaction.nonce,
71142
+ channel: 'TransactionChannel'
71143
+ })
71144
+ };
71145
+ socket.send(JSON.stringify(msg));
71146
+ };
71147
+
71148
+ socket.onclose = function (event) {};
71149
+
71150
+ socket.onmessage = function (event) {
71151
+ var item = JSON.parse(event.data);
71152
+
71153
+ if (item.type === "ping") {
71154
+ return;
71155
+ }
71156
+
71157
+ if (item.message && item.message.status && item.message.status != 'pending') {
71158
+ setFoundTransaction(item.message);
71159
+ }
71160
+ };
71161
+
71162
+ socket.onerror = function (error) {
71163
+ console.log('WebSocket Error: ' + error);
71164
+ };
71165
+ };
71166
+
71167
+ var initializeTracking = function initializeTracking(transaction, afterBlock) {
71168
+ setGivenTransaction(transaction);
71169
+
71170
+ if (recover == undefined) {
71171
+ createTracking(transaction, afterBlock, 1);
71172
+ }
71173
+
71174
+ openSocket(transaction);
71175
+ setPolling(true);
71176
+ };
71177
+
71178
+ react.useEffect(function () {
71179
+ if (recover) {
71180
+ initializeTracking({
71181
+ blockchain: recover.blockchain,
71182
+ id: recover.transaction,
71183
+ from: recover.sender,
71184
+ nonce: recover.nonce
71185
+ }, recover.afterBlock);
71186
+ }
71187
+ }, [recover]);
71188
+ return /*#__PURE__*/react.createElement(TransactionTrackingContext.Provider, {
71189
+ value: {
71190
+ initializeTracking: initializeTracking,
71191
+ foundTransaction: foundTransaction
71192
+ }
71193
+ }, props.children);
71194
+ });
71195
+
70926
71196
  var WalletProvider = (function (props) {
70927
71197
  var _useContext = react.useContext(ErrorContext);
70928
71198
  _useContext.setError;
@@ -71062,9 +71332,9 @@ var Donation = /*#__PURE__*/function () {
71062
71332
  container: container,
71063
71333
  connected: connected,
71064
71334
  unmount: unmount
71065
- }, /*#__PURE__*/react.createElement(ConversionRateProvider, null, /*#__PURE__*/react.createElement(ChangableAmountProvider, {
71335
+ }, /*#__PURE__*/react.createElement(NavigateProvider, null, /*#__PURE__*/react.createElement(ConversionRateProvider, null, /*#__PURE__*/react.createElement(ChangableAmountProvider, {
71066
71336
  accept: accept
71067
- }, /*#__PURE__*/react.createElement(TrackingProvider, {
71337
+ }, /*#__PURE__*/react.createElement(TransactionTrackingProvider, null, /*#__PURE__*/react.createElement(PaymentTrackingProvider, {
71068
71338
  document: ensureDocument(document)
71069
71339
  }, /*#__PURE__*/react.createElement(DonationRoutingProvider, {
71070
71340
  container: container,
@@ -71072,7 +71342,7 @@ var Donation = /*#__PURE__*/function () {
71072
71342
  }, /*#__PURE__*/react.createElement(DonationStack, {
71073
71343
  document: document,
71074
71344
  container: container
71075
- }), /*#__PURE__*/react.createElement(PoweredBy, null))))))))));
71345
+ }), /*#__PURE__*/react.createElement(PoweredBy, null))))))))))));
71076
71346
  };
71077
71347
  });
71078
71348
  return _context2.abrupt("return", {
@@ -71123,6 +71393,9 @@ var SignLoginDialog = (function (props) {
71123
71393
  return new Promise(function (resolve, reject) {
71124
71394
  fetch(endpoint, {
71125
71395
  method: 'POST',
71396
+ headers: {
71397
+ 'Content-Type': 'application/json'
71398
+ },
71126
71399
  body: JSON.stringify({
71127
71400
  message: message,
71128
71401
  signature: signature
@@ -71339,7 +71612,8 @@ var PaymentOverviewSkeleton = (function (props) {
71339
71612
 
71340
71613
  var PaymentOverviewDialog = (function (props) {
71341
71614
  var _useContext = react.useContext(ConfigurationContext),
71342
- currencyCode = _useContext.currencyCode;
71615
+ currencyCode = _useContext.currencyCode,
71616
+ recover = _useContext.recover;
71343
71617
 
71344
71618
  var _useContext2 = react.useContext(PaymentContext),
71345
71619
  payment = _useContext2.payment,
@@ -71355,7 +71629,7 @@ var PaymentOverviewDialog = (function (props) {
71355
71629
  var _useContext5 = react.useContext(NavigateStackContext),
71356
71630
  navigate = _useContext5.navigate;
71357
71631
 
71358
- if (payment == undefined || paymentValue == undefined) {
71632
+ if (payment == undefined || recover == undefined && paymentValue == undefined) {
71359
71633
  return /*#__PURE__*/react.createElement(PaymentOverviewSkeleton, null);
71360
71634
  }
71361
71635
 
@@ -71406,7 +71680,7 @@ var PaymentOverviewDialog = (function (props) {
71406
71680
  className: "CardImage",
71407
71681
  title: payment.name
71408
71682
  }, /*#__PURE__*/react.createElement(TokenImage, {
71409
- blockchain: payment.route.blockchain,
71683
+ blockchain: payment.blockchain,
71410
71684
  address: payment.token
71411
71685
  })), /*#__PURE__*/react.createElement("div", {
71412
71686
  className: "CardBody"
@@ -71436,7 +71710,11 @@ var PaymentStack = (function (props) {
71436
71710
  open = _useContext.open,
71437
71711
  close = _useContext.close;
71438
71712
 
71713
+ var _useContext2 = react.useContext(NavigateContext),
71714
+ setNavigate = _useContext2.setNavigate;
71715
+
71439
71716
  return /*#__PURE__*/react.createElement(ReactDialogStack, {
71717
+ setNavigate: setNavigate,
71440
71718
  open: open,
71441
71719
  close: close,
71442
71720
  start: "PaymentOverview",
@@ -71454,12 +71732,21 @@ var PaymentStack = (function (props) {
71454
71732
 
71455
71733
  var preflight$1 = /*#__PURE__*/function () {
71456
71734
  var _ref2 = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee(_ref) {
71457
- var accept;
71735
+ var accept, recover;
71458
71736
  return regenerator.wrap(function _callee$(_context) {
71459
71737
  while (1) {
71460
71738
  switch (_context.prev = _context.next) {
71461
71739
  case 0:
71462
- accept = _ref.accept;
71740
+ accept = _ref.accept, recover = _ref.recover;
71741
+
71742
+ if (!recover) {
71743
+ _context.next = 3;
71744
+ break;
71745
+ }
71746
+
71747
+ return _context.abrupt("return");
71748
+
71749
+ case 3:
71463
71750
  accept.forEach(function (configuration) {
71464
71751
  if (typeof configuration.blockchain === 'undefined') {
71465
71752
  throw 'You need to set the blockchain your want to receive the payment on!';
@@ -71478,7 +71765,7 @@ var preflight$1 = /*#__PURE__*/function () {
71478
71765
  }
71479
71766
  });
71480
71767
 
71481
- case 2:
71768
+ case 4:
71482
71769
  case "end":
71483
71770
  return _context.stop();
71484
71771
  }
@@ -71493,16 +71780,17 @@ var preflight$1 = /*#__PURE__*/function () {
71493
71780
 
71494
71781
  var Payment = /*#__PURE__*/function () {
71495
71782
  var _ref4 = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee2(_ref3) {
71496
- var accept, amount, event, sent, confirmed, failed, error, critical, style, whitelist, blacklist, providers, currency, connected, closed, track, fee, document, unmount;
71783
+ var accept, amount, event, sent, confirmed, failed, error, critical, style, whitelist, blacklist, providers, currency, connected, closed, track, fee, recover, document, unmount;
71497
71784
  return regenerator.wrap(function _callee2$(_context2) {
71498
71785
  while (1) {
71499
71786
  switch (_context2.prev = _context2.next) {
71500
71787
  case 0:
71501
- 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;
71788
+ 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;
71502
71789
  _context2.prev = 1;
71503
71790
  _context2.next = 4;
71504
71791
  return preflight$1({
71505
- accept: accept
71792
+ accept: accept,
71793
+ recover: recover
71506
71794
  });
71507
71795
 
71508
71796
  case 4:
@@ -71529,7 +71817,8 @@ var Payment = /*#__PURE__*/function () {
71529
71817
  blacklist: blacklist,
71530
71818
  providers: providers,
71531
71819
  track: track,
71532
- fee: fee
71820
+ fee: fee,
71821
+ recover: recover
71533
71822
  }
71534
71823
  }, /*#__PURE__*/react.createElement(UpdatableProvider, null, /*#__PURE__*/react.createElement(ClosableProvider, {
71535
71824
  unmount: unmount
@@ -71538,7 +71827,7 @@ var Payment = /*#__PURE__*/function () {
71538
71827
  container: container,
71539
71828
  connected: connected,
71540
71829
  unmount: unmount
71541
- }, /*#__PURE__*/react.createElement(ConversionRateProvider, null, /*#__PURE__*/react.createElement(ChangableAmountProvider, {
71830
+ }, /*#__PURE__*/react.createElement(NavigateProvider, null, /*#__PURE__*/react.createElement(ConversionRateProvider, null, /*#__PURE__*/react.createElement(ChangableAmountProvider, {
71542
71831
  accept: accept
71543
71832
  }, /*#__PURE__*/react.createElement(PaymentAmountRoutingProvider, {
71544
71833
  accept: accept,
@@ -71546,7 +71835,7 @@ var Payment = /*#__PURE__*/function () {
71546
71835
  blacklist: blacklist,
71547
71836
  event: event,
71548
71837
  fee: fee
71549
- }, /*#__PURE__*/react.createElement(TrackingProvider, {
71838
+ }, /*#__PURE__*/react.createElement(TransactionTrackingProvider, null, /*#__PURE__*/react.createElement(PaymentTrackingProvider, {
71550
71839
  document: ensureDocument(document)
71551
71840
  }, /*#__PURE__*/react.createElement(PaymentProvider, {
71552
71841
  container: container,
@@ -71554,7 +71843,7 @@ var Payment = /*#__PURE__*/function () {
71554
71843
  }, /*#__PURE__*/react.createElement(PaymentValueProvider, null, /*#__PURE__*/react.createElement(PaymentStack, {
71555
71844
  document: document,
71556
71845
  container: container
71557
- }), /*#__PURE__*/react.createElement(PoweredBy, null))))))))))));
71846
+ }), /*#__PURE__*/react.createElement(PoweredBy, null))))))))))))));
71558
71847
  };
71559
71848
  });
71560
71849
  return _context2.abrupt("return", {
@@ -71830,7 +72119,11 @@ var SaleStack = (function (props) {
71830
72119
  open = _useContext.open,
71831
72120
  close = _useContext.close;
71832
72121
 
72122
+ var _useContext2 = react.useContext(NavigateContext),
72123
+ setNavigate = _useContext2.setNavigate;
72124
+
71833
72125
  return /*#__PURE__*/react.createElement(ReactDialogStack, {
72126
+ setNavigate: setNavigate,
71834
72127
  open: open,
71835
72128
  close: close,
71836
72129
  start: "SaleOverview",
@@ -71941,9 +72234,9 @@ var Sale = /*#__PURE__*/function () {
71941
72234
  container: container,
71942
72235
  connected: connected,
71943
72236
  unmount: unmount
71944
- }, /*#__PURE__*/react.createElement(ConversionRateProvider, null, /*#__PURE__*/react.createElement(ChangableAmountProvider, {
72237
+ }, /*#__PURE__*/react.createElement(NavigateProvider, null, /*#__PURE__*/react.createElement(ConversionRateProvider, null, /*#__PURE__*/react.createElement(ChangableAmountProvider, {
71945
72238
  accept: accept
71946
- }, /*#__PURE__*/react.createElement(TrackingProvider, {
72239
+ }, /*#__PURE__*/react.createElement(TransactionTrackingProvider, null, /*#__PURE__*/react.createElement(PaymentTrackingProvider, {
71947
72240
  document: ensureDocument(document)
71948
72241
  }, /*#__PURE__*/react.createElement(SaleRoutingProvider, {
71949
72242
  container: container,
@@ -71951,7 +72244,7 @@ var Sale = /*#__PURE__*/function () {
71951
72244
  }, /*#__PURE__*/react.createElement(SaleStack, {
71952
72245
  document: document,
71953
72246
  container: container
71954
- }), /*#__PURE__*/react.createElement(PoweredBy, null))))))))));
72247
+ }), /*#__PURE__*/react.createElement(PoweredBy, null))))))))))));
71955
72248
  };
71956
72249
  });
71957
72250
  return _context2.abrupt("return", {