only display currencies with balances when funding

This commit is contained in:
Barry Gitarts 2019-12-19 13:43:19 -05:00
parent 5346af5d2d
commit 80cf25ff84
4 changed files with 126 additions and 7 deletions

View File

@ -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",

View File

@ -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

View File

@ -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
View File

@ -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"