only display currencies with balances when funding
This commit is contained in:
parent
5346af5d2d
commit
80cf25ff84
|
@ -70,6 +70,7 @@
|
|||
"@material-ui/core": "^4.3.3",
|
||||
"@material-ui/icons": "^3.0.1",
|
||||
"@material-ui/styles": "^4.3.3",
|
||||
"@mycrypto/eth-scan": "^1.1.0",
|
||||
"@nozbe/watermelondb": "^0.9.0",
|
||||
"@nozbe/with-observables": "^1.0.2",
|
||||
"@rehooks/window-scroll-position": "^1.0.1",
|
||||
|
|
|
@ -22,14 +22,14 @@ CurrencySelect.propTypes = {
|
|||
publishing: PropTypes.bool
|
||||
}
|
||||
|
||||
const orderCurrencies = (currencies, publishing) => {
|
||||
const orderCurrencies = (currencies, balances, publishing) => {
|
||||
if (publishing) {
|
||||
const temp = [...currencies]
|
||||
let weth = currencies.findIndex(e => e.label === 'WETH')
|
||||
temp[0] = temp[weth]
|
||||
return temp.filter(e => e !== undefined)
|
||||
}
|
||||
return currencies
|
||||
return balances ? currencies.filter(c => c.label === 'ETH' || (balances[c.value] && !balances[c.value].isZero())) : currencies
|
||||
}
|
||||
|
||||
function CurrencySelect({
|
||||
|
@ -45,10 +45,9 @@ function CurrencySelect({
|
|||
publishing
|
||||
}) {
|
||||
const context = useContext(FundingContext)
|
||||
const { account } = context
|
||||
const { account, currencies, balances: accountBalances } = context
|
||||
const [balances, setBalances] = useState({})
|
||||
const [allowances, setAllowances] = useState({})
|
||||
const { currencies } = context
|
||||
|
||||
const updateBalancesAllowances = () => {
|
||||
const latestBalances = {}
|
||||
|
@ -99,7 +98,7 @@ function CurrencySelect({
|
|||
onBlur={onBlur}
|
||||
value={value || ''}
|
||||
>
|
||||
{!!currencies && orderCurrencies(currencies, publishing).map((option, idx) => (
|
||||
{!!currencies && orderCurrencies(currencies, accountBalances, publishing).map((option, idx) => (
|
||||
<MenuItem style={{display: 'flex', alignItems: 'center'}} key={option.value} value={option.value}>
|
||||
<div style={{display: 'flex', alignItems: 'center'}}>
|
||||
{option.icon || <img
|
||||
|
|
17
src/dapp.js
17
src/dapp.js
|
@ -3,6 +3,7 @@
|
|||
import React from 'react'
|
||||
import { HashRouter as Router } from 'react-router-dom'
|
||||
import EmbarkJS from './embarkArtifacts/embarkjs'
|
||||
import EthScan, { HttpProvider } from '@mycrypto/eth-scan'
|
||||
import LiquidPledging from './embarkArtifacts/contracts/LiquidPledging'
|
||||
import Snackbar from '@material-ui/core/Snackbar'
|
||||
import { ApolloProvider } from '@apollo/react-hooks'
|
||||
|
@ -35,6 +36,7 @@ class App extends React.Component {
|
|||
|
||||
componentDidMount(){
|
||||
const network = process.env.REACT_APP_NETWORK || 'ropsten'
|
||||
this.scanner = new EthScan(new HttpProvider('https://mainnet.infura.io/v3/a2687d7078ff46d3b5f3f58cb97d3e44'))
|
||||
this.setCurrencies(network)
|
||||
this.setGraphClient(network)
|
||||
this.grabAddress()
|
||||
|
@ -53,7 +55,8 @@ class App extends React.Component {
|
|||
setCurrencies = async network => {
|
||||
const kyberCurrencies = await getKyberCurrencies(network)
|
||||
this.currencies = [...currencies, ...kyberCurrencies].sort(currencyOrder)
|
||||
this.getAndSetPrices()
|
||||
await this.getAndSetPrices()
|
||||
this.getAndSetBalances()
|
||||
}
|
||||
|
||||
setGraphClient = network => {
|
||||
|
@ -96,6 +99,7 @@ class App extends React.Component {
|
|||
const accounts = await EmbarkJS.enableEthereum();
|
||||
const account = accounts[0]
|
||||
this.setState({ account })
|
||||
this.getAndSetBalances(account)
|
||||
this.web3Init()
|
||||
return account
|
||||
} catch (error) {
|
||||
|
@ -109,6 +113,14 @@ class App extends React.Component {
|
|||
this.setState({ prices })
|
||||
}
|
||||
|
||||
getAndSetBalances = async acc => {
|
||||
const { account } = this.state
|
||||
if (!acc && !account) return
|
||||
const addresses = this.currencies.filter(c => c.label !== 'ETH').map(c => c.value)
|
||||
const balances = await this.scanner.getTokensBalance(acc || account, addresses)
|
||||
this.setState({ balances })
|
||||
}
|
||||
|
||||
openSnackBar = (variant, message) => {
|
||||
if (typeof message === 'object') {
|
||||
const msg = message.message
|
||||
|
@ -159,12 +171,13 @@ class App extends React.Component {
|
|||
}
|
||||
|
||||
render() {
|
||||
const { account, needsInit, lpAllowance: _lpAllowance, loading, authorizedPayments, snackbar, prices } = this.state
|
||||
const { account, balances, needsInit, lpAllowance: _lpAllowance, loading, authorizedPayments, snackbar, prices } = this.state
|
||||
const { appendFundProfile, appendPledges, transferPledgeAmounts, openSnackBar, closeSnackBar, currencies, syncWithRemote, updateUsdPrice, client, enableEthereum } = this
|
||||
const fundingContext = {
|
||||
appendPledges,
|
||||
appendFundProfile,
|
||||
account,
|
||||
balances,
|
||||
currencies,
|
||||
enableEthereum,
|
||||
transferPledgeAmounts,
|
||||
|
|
106
yarn.lock
106
yarn.lock
|
@ -1225,6 +1225,103 @@
|
|||
resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.4.tgz#622a72bebd1e3f48d921563b4b60a762295a81fc"
|
||||
integrity sha512-6PYY5DVdAY1ifaQW6XYTnOMihmBVT27elqSjEoodchsGjzYlEsTQMcEhSud99kVawatyTZRTiVkJ/c6lwbQ7nA==
|
||||
|
||||
"@ethersproject/abi@^5.0.0-beta.133":
|
||||
version "5.0.0-beta.142"
|
||||
resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.0-beta.142.tgz#cde0ced7daa2fbc98e35a2c31203331907e84a39"
|
||||
integrity sha512-vJ2V9fPNzi+8iutY4sjy6mgogkJtiGsd9hmpa1bjnGW6qnHOEkAV1fzVpvT002LlnjFgqgtzuLBDZob6oU7i8w==
|
||||
dependencies:
|
||||
"@ethersproject/address" ">=5.0.0-beta.128"
|
||||
"@ethersproject/bignumber" ">=5.0.0-beta.130"
|
||||
"@ethersproject/bytes" ">=5.0.0-beta.129"
|
||||
"@ethersproject/constants" ">=5.0.0-beta.128"
|
||||
"@ethersproject/hash" ">=5.0.0-beta.128"
|
||||
"@ethersproject/keccak256" ">=5.0.0-beta.127"
|
||||
"@ethersproject/logger" ">=5.0.0-beta.129"
|
||||
"@ethersproject/properties" ">=5.0.0-beta.131"
|
||||
"@ethersproject/strings" ">=5.0.0-beta.130"
|
||||
|
||||
"@ethersproject/address@>=5.0.0-beta.128":
|
||||
version "5.0.0-beta.133"
|
||||
resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.0.0-beta.133.tgz#b6bf2c298da5701c61038e4cdfac2e0038b884ce"
|
||||
integrity sha512-7SjGhZ3xClqlmzqNNzESKlHbBeEzDWXIeKUBbSzK3Ce9PgK6uboiNe53fgqzhrRVOMhD1J4Q+oIm4DsTv37FWg==
|
||||
dependencies:
|
||||
"@ethersproject/bignumber" ">=5.0.0-beta.130"
|
||||
"@ethersproject/bytes" ">=5.0.0-beta.129"
|
||||
"@ethersproject/keccak256" ">=5.0.0-beta.127"
|
||||
"@ethersproject/logger" ">=5.0.0-beta.129"
|
||||
"@ethersproject/rlp" ">=5.0.0-beta.126"
|
||||
bn.js "^4.4.0"
|
||||
|
||||
"@ethersproject/bignumber@>=5.0.0-beta.130":
|
||||
version "5.0.0-beta.135"
|
||||
resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.0.0-beta.135.tgz#9d464df8967f5d314d109497e4f25ab82314c098"
|
||||
integrity sha512-7Tw2NgHzK7o+70bwyoaIZCbRycz+saWNU0sLOYnis3qYXwYsdTL+Rm0PMGA2v4jyHJt7BPS2pxGww+akVXbX+w==
|
||||
dependencies:
|
||||
"@ethersproject/bytes" ">=5.0.0-beta.129"
|
||||
"@ethersproject/logger" ">=5.0.0-beta.129"
|
||||
"@ethersproject/properties" ">=5.0.0-beta.131"
|
||||
bn.js "^4.4.0"
|
||||
|
||||
"@ethersproject/bytes@>=5.0.0-beta.129":
|
||||
version "5.0.0-beta.134"
|
||||
resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.0.0-beta.134.tgz#eb6b9a200be02d6d539f90086fbfad26ec63d0d5"
|
||||
integrity sha512-2BULy5x0BuHPRzuGjEYWndJieDaRAaZUbMk53fZjH4yjhKMHDGADQQOtaSD4wN+H183YOXMGdtlCrRGJ1N+uNg==
|
||||
dependencies:
|
||||
"@ethersproject/logger" ">=5.0.0-beta.129"
|
||||
|
||||
"@ethersproject/constants@>=5.0.0-beta.128":
|
||||
version "5.0.0-beta.132"
|
||||
resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.0.0-beta.132.tgz#068cc97493fbc1543299bda79e0e726310e129a4"
|
||||
integrity sha512-ioO7Ez8Xatk5z3lVzzEhRjXng1le1sTzfuD3v8gUozrzgLXyl0X81Go1Nadj7qPgo68HziIFcm5kRFp4SdJa0A==
|
||||
dependencies:
|
||||
"@ethersproject/bignumber" ">=5.0.0-beta.130"
|
||||
|
||||
"@ethersproject/hash@>=5.0.0-beta.128":
|
||||
version "5.0.0-beta.133"
|
||||
resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.0.0-beta.133.tgz#bda0c74454a82359642033f27c5157963495fcdf"
|
||||
integrity sha512-tfF11QxFlJCy92rMtUZ0kImchWhlYXkN5Gj5cYfTcCdWEUKwNq1LljDnlrjV2JabO6s5enb8uiUj4RBTo2+Rgw==
|
||||
dependencies:
|
||||
"@ethersproject/bytes" ">=5.0.0-beta.129"
|
||||
"@ethersproject/keccak256" ">=5.0.0-beta.127"
|
||||
"@ethersproject/logger" ">=5.0.0-beta.129"
|
||||
"@ethersproject/strings" ">=5.0.0-beta.130"
|
||||
|
||||
"@ethersproject/keccak256@>=5.0.0-beta.127":
|
||||
version "5.0.0-beta.131"
|
||||
resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.0.0-beta.131.tgz#b5778723ee75208065b9b9ad30c71d480f41bb31"
|
||||
integrity sha512-KQnqMwGV0IMOjAr/UTFO8DuLrmN1uaMvcV3zh9hiXhh3rCuY+WXdeUh49w1VQ94kBKmaP0qfGb7z4SdhUWUHjw==
|
||||
dependencies:
|
||||
"@ethersproject/bytes" ">=5.0.0-beta.129"
|
||||
js-sha3 "0.5.7"
|
||||
|
||||
"@ethersproject/logger@>=5.0.0-beta.129":
|
||||
version "5.0.0-beta.133"
|
||||
resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.0.0-beta.133.tgz#2d62d495ed413c7045054d4f99a0fb4920079b2e"
|
||||
integrity sha512-1ISf7rFKFbMHlEB37JS7Oy3FgFlvzF2Ze2uFZMJHGKp9xgDvFy1VHNMBM1KrJPK4AqCZXww0//e2keLsN3g/Cw==
|
||||
|
||||
"@ethersproject/properties@>=5.0.0-beta.131":
|
||||
version "5.0.0-beta.135"
|
||||
resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.0.0-beta.135.tgz#51a0a5d72ca034b5ae845d43ed409eb3576a3ca7"
|
||||
integrity sha512-R4ROFaFh86n09eE+MWMPzaB87V5OSgqu0gtQ7LjUvkFF3eqdpdvLVD4N93hvCKNZcjGHI4WmazDUlpuXZVgDkA==
|
||||
dependencies:
|
||||
"@ethersproject/logger" ">=5.0.0-beta.129"
|
||||
|
||||
"@ethersproject/rlp@>=5.0.0-beta.126":
|
||||
version "5.0.0-beta.131"
|
||||
resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.0.0-beta.131.tgz#4a0c0c314e26ed7f01be6bca16308d629a8022d2"
|
||||
integrity sha512-sUJUGbywlnuk2frkSWzWiGenTrwOnrKQaNKJqjCGmK35x0WIzcR4/1gC6jWa0hpWJT6Seq6J6SCT5CS+ZWCFNw==
|
||||
dependencies:
|
||||
"@ethersproject/bytes" ">=5.0.0-beta.129"
|
||||
|
||||
"@ethersproject/strings@>=5.0.0-beta.130":
|
||||
version "5.0.0-beta.135"
|
||||
resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.0.0-beta.135.tgz#7754a805831383bf1838cd097d26c6135e96a745"
|
||||
integrity sha512-MiZSJPhAQggXb3XA/XS4jmwmj5CsknMXk/XIzNZB7eYqEGA2i7sQV7+o6DOE+3lq5k5BhB8OaDziogNCOGAouA==
|
||||
dependencies:
|
||||
"@ethersproject/bytes" ">=5.0.0-beta.129"
|
||||
"@ethersproject/constants" ">=5.0.0-beta.128"
|
||||
"@ethersproject/logger" ">=5.0.0-beta.129"
|
||||
|
||||
"@hapi/accept@3.x.x":
|
||||
version "3.2.3"
|
||||
resolved "https://registry.yarnpkg.com/@hapi/accept/-/accept-3.2.3.tgz#6947259928ed28df2736c7daffbfc739b72adfcc"
|
||||
|
@ -1627,6 +1724,15 @@
|
|||
call-me-maybe "^1.0.1"
|
||||
glob-to-regexp "^0.3.0"
|
||||
|
||||
"@mycrypto/eth-scan@^1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@mycrypto/eth-scan/-/eth-scan-1.1.0.tgz#2355d90fae833b67304e5ae11072dbba3420f22b"
|
||||
integrity sha512-s4ZPmwETCKtU0Myy7YObfxRb05H8lkuSE9ynRpeSaTE03IHPbsB6/SKmCatJUhRfPawhmPDlqVKiZ8ARgfCLqg==
|
||||
dependencies:
|
||||
"@ethersproject/abi" "^5.0.0-beta.133"
|
||||
bignumber.js "^9.0.0"
|
||||
isomorphic-fetch "^2.2.1"
|
||||
|
||||
"@nodelib/fs.stat@^1.1.2":
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b"
|
||||
|
|
Loading…
Reference in New Issue