diff --git a/src/components/App.js b/src/components/App.js index d70952b3..ea52c9af 100644 --- a/src/components/App.js +++ b/src/components/App.js @@ -88,7 +88,7 @@ class App extends React.Component { } else if (this.props.network !== prevProps.network) { this.setState({ balance: undefined, address: undefined, wallet: undefined, grants: undefined }) this.connect() - }else if(this.state.address !== prevState.address){ + }else if(this.state.address !== prevState.address && prevState.address){ this.setState({ balance: undefined, grants: undefined }) this.getBalance() this.getGrants() @@ -190,8 +190,9 @@ class App extends React.Component { error: false }) this.getBalance() - this.getGrants() - this.refreshInterval(); + this.getGrants().then(() => { + this.refreshInterval(); + }) } catch (e) { console.log(e) return this.setState({ @@ -373,7 +374,9 @@ class App extends React.Component { return true } this.setState((state, props) => { - const granterGrants = state.grants?.granter ? state.grants.granter.filter(filterGrant) : [] + if(!state.grants) return {} + + const granterGrants = state.grants.granter.filter(filterGrant) granterGrants.push(grant) return { grants: { ...state.grants, granter: granterGrants } } }) @@ -394,6 +397,8 @@ class App extends React.Component { return true; } this.setState((state, props) => { + if(!state.grants) return {} + const granterGrants = state.grants.granter.filter(filterGrant) return { grants: { ...state.grants, granter: granterGrants } } }) @@ -659,7 +664,6 @@ class App extends React.Component { network={this.props.network} address={this.state.address} wallet={this.state.wallet} - grants={this.state.grants} favouriteAddresses={this.state.favouriteAddresses[this.props.network.path] || []} queryClient={this.props.queryClient} stargateClient={this.state.stargateClient} /> diff --git a/src/components/Coins.js b/src/components/Coins.js index 01a55eee..c55592ee 100644 --- a/src/components/Coins.js +++ b/src/components/Coins.js @@ -4,7 +4,7 @@ function Coins(props) { function amount(coins, decimals){ if(props.inBaseDenom) return coins.amount - if (!decimals) { + if (decimals == null) { decimals = 6 } const prec = precision(coins, decimals) diff --git a/src/components/DelegateForm.js b/src/components/DelegateForm.js index 62e67b70..c10e5910 100644 --- a/src/components/DelegateForm.js +++ b/src/components/DelegateForm.js @@ -109,7 +109,7 @@ class DelegateForm extends React.Component { this.props.stargateClient.simulate(this.props.address, messages).then(gas => { const saveTxFeeNum = (this.props.redelegate || this.props.undelegate) ? 0 : 10 const gasPrice = this.props.stargateClient.getFee(gas).amount[0].amount - const decimals = pow(10, this.props.network.decimals || 6) + const decimals = pow(10, this.props.network.decimals) const amount = divide(subtract(this.props.availableBalance.amount, multiply(gasPrice, saveTxFeeNum)), decimals) this.setState({amount: amount > 0 ? amount : 0}) diff --git a/src/components/Governance.js b/src/components/Governance.js index ba749b9e..032532c9 100644 --- a/src/components/Governance.js +++ b/src/components/Governance.js @@ -14,7 +14,7 @@ import Proposal from '../utils/Proposal.mjs'; import Vote from '../utils/Vote.mjs'; function Governance(props) { - const { address, wallet, network, grants } = props + const { address, wallet, network } = props const [showModal, setShowModal] = useState() const [proposal, setProposal] = useState() const [proposals, setProposals] = useState() @@ -82,21 +82,20 @@ function Governance(props) { if(!props.queryClient) return const { clearExisting } = opts || {} - props.queryClient.getProposals().then(async (proposals) => { - proposals = proposals.map(el => Proposal(el)) - setProposals(sortProposals(proposals)) - setTallies(proposals.reduce((sum, proposal) => { + try { + let newProposals = await props.queryClient.getProposals() + newProposals = newProposals.map(el => Proposal(el)) + setProposals(sortProposals(newProposals)) + setTallies(newProposals.reduce((sum, proposal) => { if (!_.every(Object.values(proposal.final_tally_result), el => el === '0')) { sum[proposal.proposal_id] = proposal.final_tally_result } return sum }, {})) - }, - (error) => { - if(!proposals || clearExisting) setProposals([]) - setError(`Failed to load proposals: ${error.message}`); - } - ) + } catch (error) { + if (!proposals || clearExisting) setProposals([]) + setError(`Failed to load proposals: ${error.message}`); + } } async function getTallies(proposals) { @@ -109,9 +108,7 @@ function Governance(props) { if (proposal.isVoting && talliesInvalid) { return props.queryClient.getProposalTally(proposal_id).then(result => { return setTallies({ [proposal_id]: result.tally }) - }).catch(error => { }) - } else { - return setTallies({ [proposal_id]: result }) + }) } } }); diff --git a/src/utils/Chain.mjs b/src/utils/Chain.mjs index c8017321..82af0a3a 100644 --- a/src/utils/Chain.mjs +++ b/src/utils/Chain.mjs @@ -17,7 +17,7 @@ const Chain = async (data, directory) => { authzSupport: data.authzSupport ?? chainData.params?.authz, denom: data.denom || base.denom, symbol: data.symbol || token.denom, - decimals: data.decimals || token.exponent || 6, + decimals: data.decimals || (token.exponent ?? 6), image: data.image || (asset.logo_URIs && (asset.logo_URIs.png || asset.logo_URIs.svg)), coinGeckoId: asset.coingecko_id, chainData,