@exodus/ethereum-lib 2.0.0 → 2.0.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@exodus/ethereum-lib",
3
- "version": "2.0.0",
3
+ "version": "2.0.2",
4
4
  "description": "Ethereum Library",
5
5
  "main": "src/index.js",
6
6
  "author": "Exodus Movement, Inc.",
@@ -11,7 +11,7 @@
11
11
  },
12
12
  "dependencies": {
13
13
  "@exodus/asset-lib": "^3.4.0",
14
- "@exodus/models": "^8.2.0",
14
+ "@exodus/models": "^8.4.0",
15
15
  "@exodus/solidity-contract": "^0.1.3",
16
16
  "base-x": "^3.0.2",
17
17
  "ethereumjs-tx": "^1.3.7",
@@ -21,5 +21,5 @@
21
21
  "peerDependencies": {
22
22
  "@exodus/assets": "8.0.x"
23
23
  },
24
- "gitHead": "cc2ade686dff7693c028ca9d6796ada2a0eed6f1"
24
+ "gitHead": "d87cca0e0050afde0621e4090010d6a185eeab9b"
25
25
  }
@@ -16,32 +16,42 @@ export const calculateBumpedGasPrice = (tx, currentGasPrice) => {
16
16
  export default (
17
17
  getFeeDataSelector,
18
18
  getFeeSelector,
19
- getWalletAccountBalancesSelector,
20
19
  activeWalletAccountSelector,
21
20
  getPersonalNoteByTxIdSelector,
21
+ getIsRbfEnabledSelector,
22
+ getIsEnoughBalanceToAccelerateSelector,
22
23
  assets
23
24
  ) =>
24
25
  createSelector(
25
26
  getFeeDataSelector,
26
27
  getFeeSelector,
27
- getWalletAccountBalancesSelector,
28
28
  activeWalletAccountSelector,
29
29
  getPersonalNoteByTxIdSelector,
30
- (getFeeData, getFee, getWalletAccountBalances, activeWalletAccount, getPersonalNoteByTxId) => (
31
- tx
32
- ) => {
30
+ getIsRbfEnabledSelector,
31
+ getIsEnoughBalanceToAccelerateSelector,
32
+ (
33
+ getFeeData,
34
+ getFee,
35
+ activeWalletAccount,
36
+ getPersonalNoteByTxId,
37
+ getIsRbfEnabled,
38
+ getIsEnoughBalanceToAccelerate
39
+ ) => (tx) => {
33
40
  const assetName = tx.coinName
34
41
  const asset = assets[assetName]
42
+ if (!getIsRbfEnabled(assetName)) return BumpType.NONE
35
43
  if (!['ETHEREUM_ERC20', 'ETHEREUM_LIKE'].includes(asset.assetType)) return BumpType.NONE
36
44
  if (!tx.pending || !tx.sent || tx.exchange || !tx.data?.gasLimit) return BumpType.NONE
37
45
  if (getPersonalNoteByTxId(tx.txId)?.dapp) return BumpType.NONE
38
46
 
39
- const walletAccountBalances = getWalletAccountBalances(activeWalletAccount)
40
47
  const { gasPrice: currentGasPrice } = getFeeData(assetName)
41
48
  const gasPriceToUse = calculateBumpedGasPrice(tx, currentGasPrice)
42
49
  const replacementFee = gasPriceToUse.mul(tx.data.gasLimit)
43
50
  const extraEthNeeded = replacementFee.sub(tx.feeAmount)
44
- if (walletAccountBalances[asset.baseAsset.name].lt(extraEthNeeded)) return BumpType.NONE
51
+ if (
52
+ !getIsEnoughBalanceToAccelerate(activeWalletAccount, asset.baseAsset.name, extraEthNeeded)
53
+ )
54
+ return BumpType.NONE
45
55
 
46
56
  return BumpType.RBF
47
57
  }
@@ -0,0 +1,20 @@
1
+ import { createSelector } from 'reselect'
2
+
3
+ export default (getWalletAccountBalancesSelector, getUnconfirmedEthereumBalanceSelector) =>
4
+ createSelector(
5
+ getWalletAccountBalancesSelector,
6
+ getUnconfirmedEthereumBalanceSelector,
7
+ (getWalletAccountBalances, getUnconfirmedEthereumBalance) => (
8
+ walletAccount,
9
+ assetName,
10
+ extraEthNeeded
11
+ ) => {
12
+ const totalBalance = getWalletAccountBalances(walletAccount)[assetName]
13
+ const unconfirmedBalance = getUnconfirmedEthereumBalance({
14
+ asset: assetName,
15
+ walletAccount,
16
+ })
17
+
18
+ return totalBalance.sub(unconfirmedBalance).gte(extraEthNeeded)
19
+ }
20
+ )
@@ -2,3 +2,5 @@ export {
2
2
  default as getCanAccelerateTxFactory,
3
3
  calculateBumpedGasPrice,
4
4
  } from './get-can-accelerate-tx-factory'
5
+
6
+ export { default as getIsEnoughBalanceToAccelerateSelectorFactory } from './get-is-enough-balance-to-accelerate-factory'