+
+ {extraHead}
+ {networkOverlay}
+ {web3_setup}
+
+
+ {header}
+
+
+
+ {web3 /*&& this.checkNetwork()*/ && (() => {
+ //console.log("VIEW:",view)
+
+ let moreButtons = (
+
+ )
+
+ let subBalanceDisplay = ""
+ if(ERC20TOKEN){
+ if(!this.state.gasBalance){
+ subBalanceDisplay = ""
+ }else{
+ subBalanceDisplay = (
+
+ {Math.round(this.state.gasBalance*10000)/10000}
+
+ )
+ }
+
+
+ if(this.state.isAdmin){
+ moreButtons = (
+
+ )
+ }else if(this.state.isVendor&&this.state.isVendor.isAllowed){
+ moreButtons = (
+
+
+
+
+ )
+ }else if(ERC20TOKEN){
+ moreButtons = (
+
+
+
+ )
+ }else{
+ moreButtons = ""
+ }
+
+ if(this.state.contracts){
+ eventParser = (
+
+ {this.setState({transferFrom:allEvents},this.syncFullTransactions)}}
+ />
+ {this.setState({transferTo:allEvents},this.syncFullTransactions)}}
+ />
+ {this.setState({transferFromWithData:allEvents},this.syncFullTransactions)}}
+ />
+ {this.setState({transferToWithData:allEvents},this.syncFullTransactions)}}
+ />
+ {
+ let {vendors} = this.state
+ console.log("VENDOR",vendor)
+ if(!vendors[vendor.vendor] || vendors[vendor.vendor].blockNumber
+
+ )
+ }
+ }
+
+
+ if(view.indexOf("account_")==0)
+ {
+
+ let targetAddress = view.replace("account_","")
+ console.log("TARGET",targetAddress)
+ return (
+
+
+
+
+ {i18n.t('history_chat')}
+
+ )} goBack={this.goBack.bind(this)}/>
+ {defaultBalanceDisplay}
+
+
+
{
+ this.changeView('main')
+ }}
+ />
+
+
+ )
+ }
+
+ let selected = "xDai"
+ let extraTokens = ""
+
+ let defaultBalanceDisplay = (
+
+
+
+
+ )
+
+ if(ERC20TOKEN){
+ selected = ERC20NAME
+ extraTokens = (
+
+
+
+
+ )
+ defaultBalanceDisplay = extraTokens
+ }
+
+ let badgeDisplay = ""
+ if(this.state.badgeBalance>0){
+ badgeDisplay = (
+
+
+
+
+ )
+ }
+
+ let safeDisplay = ""
+ if(this.state.safe){
+
+ let versionDisplay = ""
+ if(this.state.safeBalance>0){
+ versionDisplay = "v"+this.state.safeVersion
+ }else{
+ versionDisplay = "click here to deposit funds"
+ }
+
+ let safeBalanceDisplay = dollarDisplay(this.state.safeBalance)
+ if(isNaN(this.state.safeBalance)){
+ safeBalanceDisplay = (
+
loading . . .
+ )
+ }
+
+ safeDisplay = (
+
+
{
+ this.changeView('safe')
+ }}>
+
+

+
+ Safe {versionDisplay}
+
+
+
+
+
+ {safeBalanceDisplay}
+
+
+
+
+
+
+ )
+ }
+
+ switch(view) {
+ case 'main':
+ return (
+
+
+
+
+ {extraTokens}
+
+
+
+
+
+
+
+
+ {safeDisplay}
+
+ {badgeDisplay}
+
+
+ {moreButtons}
+
+
+
{
+ this.changeView('advanced')
+ }}
+ />
+
+ );
+ case 'advanced':
+ return (
+
+
+
{
+ this.changeView('main')
+ }}
+ />
+
+ )
+ case 'send_by_scan':
+ return (
+
{
+ this.changeAlert("danger",error)
+ }}
+ />
+ );
+ case 'withdraw_from_private':
+
+
+ return (
+
+
+
+ {defaultBalanceDisplay}
+
+
+
{
+ this.changeView('main')
+ }}
+ />
+
+ );
+ case 'send_badge':
+ if(!this.state.badges || !this.state.badges[this.state.selectedBadge] || !this.state.badges[this.state.selectedBadge].name){
+ return (
+
+ loading...
+
+ )
+ }
+ return (
+
+ )
+ case 'send_to_address':
+ return (
+
+
+
+ {defaultBalanceDisplay}
+
+
+
+
+ );
+ case 'receipt':
+ return (
+
+ );
+ case 'receive':
+ return (
+
+
+
+
+ {defaultBalanceDisplay}
+
+
+
+
+ );
+ case 'request_funds':
+ return (
+
+
+
+
+ {defaultBalanceDisplay}
+
+
+
+
+ );
+ case 'apps':
+
+ let url = window.location.protocol+"//"+window.location.hostname
+ if(window.location.port&&window.location.port!=80&&window.location.port!=443){
+ url = url+":"+window.location.port
+ }
+
+ return (
+
+ );
+ case 'share-link':
+ return (
+
+ );
+ case 'send_with_link':
+ return (
+
+
+
+
+ {defaultBalanceDisplay}
+ {
+ let randomHash = this.state.web3.utils.sha3(""+Math.random())
+ let randomWallet = this.state.web3.eth.accounts.create()
+ let sig = this.state.web3.eth.accounts.sign(randomHash, randomWallet.privateKey);
+ console.log("STATE",this.state,this.state.contracts)
+ // Use xDai as default token
+ const tokenAddress = ERC20TOKEN === false ? 0 : this.state.contracts[ERC20TOKEN]._address;
+ // -- Temp hacks
+ const expirationTime = 365; // Hard-coded to 1 year link expiration.
+ let amountToSend
+ try {
+ amountToSend = this.state.web3.utils.toWei(String(amount), 'ether');
+ } catch (err) {
+ cb(err)
+ return
+ }
+ // --
+ if(!ERC20TOKEN)
+ {
+ this.state.tx(this.state.contracts.Links.send(randomHash,sig.signature,tokenAddress,amountToSend,expirationTime),250000,false,amountToSend,async (receipt)=>{
+ this.setState({sendLink: randomHash,sendKey: randomWallet.privateKey},()=>{
+ console.log("STATE SAVED",this.state)
+ })
+ cb(null, receipt)
+ })
+ } else{
+ this.state.tx(this.state.contracts[ERC20TOKEN].approve(this.state.contracts.Links._address, amountToSend),21000,false,0,async (approveReceipt)=>{
+ //cb(approveReceipt)
+ this.state.tx(this.state.contracts.Links.send(randomHash,sig.signature,tokenAddress,amountToSend,expirationTime),250000,false,amountToSend,async (sendReceipt)=>{
+ this.setState({sendLink: randomHash,sendKey: randomWallet.privateKey},()=>{
+ console.log("STATE SAVED",this.state)
+ })
+ cb(null, sendReceipt)
+ })
+ })
+ }
+ }}
+ address={account}
+ changeView={this.changeView}
+ goBack={this.goBack.bind(this)}
+ dollarDisplay={dollarDisplay}
+ convertToDollar={convertToDollar}
+ dollarSymbol={dollarSymbol}
+ />
+
+
+
+ );
+ case 'burn-wallet':
+ return (
+
+
+
+
+ {defaultBalanceDisplay}
+ {
+ if(RNMessageChannel){
+ RNMessageChannel.send("burn")
+ }
+ if(localStorage&&typeof localStorage.setItem == "function"){
+ localStorage.setItem(this.state.account+"loadedBlocksTop","")
+ localStorage.setItem(this.state.account+"metaPrivateKey","")
+ localStorage.setItem("metaPrivateKey","")
+ localStorage.setItem(this.state.account+"recentTxs","")
+ localStorage.setItem(this.state.account+"safe","")
+ localStorage.setItem(this.state.account+"transactionsByAddress","")
+ this.setState({recentTxs:[],transactionsByAddress:{}})
+ }
+ burnMetaAccount()
+ }}
+ />
+
+
+
+ );
+ case 'cash_out':
+ return (
+
+
+
+
+ {defaultBalanceDisplay}
+
+
+
+
+ );
+
+ case 'safe':
+ return (
+
+
+ )} goBack={this.goBack.bind(this)} />
+ {safeDisplay}
+
+
+
+
+ );
+
+ case 'exchange':
+ return (
+
+ );
+ case 'vendors':
+ return (
+
+ );
+ case 'loader':
+ return (
+
+ );
+ case 'reader':
+ return (
+
+ );
+ case 'claimer':
+ return (
+
+ );
+ default:
+ return (
+
unknown view
+ )
+ }
+
+ })()}
+ { ( false || !web3 /*|| !this.checkNetwork() */) &&
+
+
+
+ }
+ { alert &&
+
+
+
+