import React, { Fragment, PureComponent } from 'react'; import web3 from "Embark/web3" import Toggle from 'react-toggle'; import { BigNumber } from './utils' import "react-toggle/style.css"; import CircularProgress from '@material-ui/core/CircularProgress'; import Tooltip from '@material-ui/core/Tooltip'; // We set an allowance to be "unlimited" by setting it to // it's maximum possible value -- namely, 2^256 - 1. const { fromWei } = web3.utils; const unlimitedAllowance = new BigNumber(2).pow(256).sub(1); const getDefaultAccount = () => web3.eth.defaultAccount; const SUPPORTED_TOKENS = ['SNT', 'STT']; const BALANCE_KEYS = { 'SNT': 'SNTBalance', 'STT': 'SNTBalance' }; class TokenHandle extends PureComponent { constructor(props){ super(props); this.state = { approved: 0 }; } componentDidMount() { __embarkContext.execWhenReady(() => { this.getAllowance(); }); } getAllowance = () => { const { methods, spender } = this.props; methods.allowance(getDefaultAccount(), spender) .call() .then(approved => { this.setState({ ...this.state, approved }) }) } toggleApproved = () => { const { approved } = this.state; const { methods: { approve }, spender } = this.props; const isApproved = !!Number(approved); let amountToApprove = isApproved ? 0 : unlimitedAllowance; console.log("approve(\""+spender+"\",\"" +amountToApprove +"\")") this.setState({ updating: true }); approve( spender, amountToApprove ) .send() .then(approval => { const { events: { Approval: { returnValues: { _value } } } } = approval this.setState({ ...this.state, approved: _value, updating: false }) }).catch(err => { console.log("Approve failed: " + err); this.setState({ updating: false }); }) } render() { const { symbol, account, isLoading } = this.props; const { approved, updating } = this.state; return ( {!updating && !isLoading && !!account &&
} {isLoading || updating && }
) } } const TokenPermissions = (props) => (

Token Permissions


) export default TokenPermissions;