From 45d13547c4b27b27eeffd41d2e55ac1ddccc7359 Mon Sep 17 00:00:00 2001 From: Iuri Matias Date: Thu, 3 Oct 2019 18:40:21 -0400 Subject: [PATCH] support using only abi & address; fix default from --- examples/react-example1/src/App.js | 14 +++++++------- src/subspace.js | 8 ++++++++ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/examples/react-example1/src/App.js b/examples/react-example1/src/App.js index f203d27..7c3a831 100644 --- a/examples/react-example1/src/App.js +++ b/examples/react-example1/src/App.js @@ -4,7 +4,8 @@ import { $average, $max, $min, $latest } from "@status-im/subspace"; import { map } from 'rxjs/operators'; import ProductComponent from "./ProductComponent"; import web3 from './web3'; -import ProductContract from './MyContract'; + +import {abi, address} from './contract.json' let Product; @@ -21,12 +22,10 @@ class App extends React.Component { const subspace = new Subspace(web3.currentProvider); await subspace.init(); - Product = await ProductContract.getInstance(); - Product = subspace.contract(Product) - const rating$ = Product.events.Rating.track().map("rating").pipe(map(x => parseInt(x))); + // Product = subspace.contract(ContractInstance); // would also work + Product = subspace.contract({abi, address}); - window.Product = Product; - window.web3 = web3; + const rating$ = Product.events.Rating.track().map("rating").pipe(map(x => parseInt(x))); this.setState({ title: Product.methods.products(0).track().map('title'), @@ -47,7 +46,8 @@ class App extends React.Component { }; sendFunds = async () => { - await web3.eth.sendTransaction({value: this.state.contractFunds, to: Product.options.address}); + let accounts = await web3.eth.getAccounts(); + await web3.eth.sendTransaction({value: this.state.contractFunds, to: Product.options.address, from: accounts[0]}); }; render() { diff --git a/src/subspace.js b/src/subspace.js index e6f25dd..42078d6 100644 --- a/src/subspace.js +++ b/src/subspace.js @@ -61,6 +61,14 @@ export default class Subspace { const SubspaceContract = new this.web3.Contract(abi, {from, gas}); SubspaceContract.options.address = address; + SubspaceContract.options.from = from; + + if (!from) { + setTimeout(async () => { + const accounts = await web3.eth.getAccounts(); + SubspaceContract.options.from = accounts[0]; + }, 100); + } SubspaceContract.trackEvent = (eventName, filterConditionsOrCb) => { return this.trackEvent(SubspaceContract, eventName, filterConditionsOrCb);