Adjust for new contract wrapper (WIP)

This commit is contained in:
2017-08-12 13:59:18 +02:00
parent b1db64a07d
commit 72cf4b495e
6 changed files with 12526 additions and 40 deletions
+2 -2
View File
@@ -14,8 +14,8 @@
<td colspan="2"> <td colspan="2">
<ul> <ul>
<li><a href="https://testnet.etherscan.io/address/{{contributor.address}}">Inspect Ethereum transactions</a></li> <li><a href="https://testnet.etherscan.io/address/{{contributor.address}}">Inspect Ethereum transactions</a></li>
{{#if contributor.ipfsHash}} {{#if contributor.profileHash}}
<li><a href="https://ipfs.io/ipfs/{{contributor.ipfsHash}}">Inspect IPFS profile</a></li> <li><a href="https://ipfs.io/ipfs/{{contributor.profileHash}}">Inspect IPFS profile</a></li>
{{/if}} {{/if}}
</ul> </ul>
</td> </td>
+3 -3
View File
@@ -13,7 +13,7 @@ export default Ember.Object.extend({
github_username: null, github_username: null,
github_uid: null, github_uid: null,
wiki_username: null, wiki_username: null,
ipfsHash: null, profileHash: null,
kredits: null, kredits: null,
isCore: false, isCore: false,
isCurrentUser: false, isCurrentUser: false,
@@ -32,7 +32,7 @@ export default Ember.Object.extend({
*/ */
loadProfile(ipfs) { loadProfile(ipfs) {
let promise = new Ember.RSVP.Promise((resolve, reject) => { let promise = new Ember.RSVP.Promise((resolve, reject) => {
ipfs.getFile(this.get('ipfsHash')).then(content => { ipfs.getFile(this.get('profileHash')).then(content => {
let profileJSON = JSON.parse(content); let profileJSON = JSON.parse(content);
let profile = Ember.Object.create(profileJSON); let profile = Ember.Object.create(profileJSON);
@@ -60,7 +60,7 @@ export default Ember.Object.extend({
Ember.Logger.debug('[contributor] loaded contributor profile', profile); Ember.Logger.debug('[contributor] loaded contributor profile', profile);
resolve(); resolve();
}).catch((err) => { }).catch((err) => {
Ember.Logger.error('[contributor] error trying to load contributor profile', this.get('ipfsHash'), err); Ember.Logger.error('[contributor] error trying to load contributor profile', this.get('profileHash'), err);
reject(err); reject(err);
}); });
}); });
+24 -24
View File
@@ -4,6 +4,7 @@ import config from 'kredits-web/config/environment';
import Contributor from 'kredits-web/models/contributor'; import Contributor from 'kredits-web/models/contributor';
import Proposal from 'kredits-web/models/proposal'; import Proposal from 'kredits-web/models/proposal';
import kreditsContracts from 'npm:kredits-contracts'; import kreditsContracts from 'npm:kredits-contracts';
import Kredits from 'npm:kredits-contracts/operator';
import uuid from 'npm:uuid'; import uuid from 'npm:uuid';
const { const {
@@ -56,9 +57,9 @@ export default Service.extend({
if (localStorage.getItem('config:networkId')) { if (localStorage.getItem('config:networkId')) {
config.contractMetadata['networkId'] = localStorage.getItem('config:networkId'); config.contractMetadata['networkId'] = localStorage.getItem('config:networkId');
} }
contract = kreditsContracts(this.get('web3'), config.contractMetadata)['Kredits']; contract = new Kredits(this.get('web3'), config.contractMetadata['Operator']);
} else { } else {
contract = kreditsContracts(this.get('web3'))['Kredits']; contract = new Kredits(this.get('web3'));
} }
return contract; return contract;
@@ -72,7 +73,7 @@ export default Service.extend({
let contract = this.initializeKreditsContract(); let contract = this.initializeKreditsContract();
this.set('kreditsContractInstance', contract); this.set('kreditsContractInstance', contract);
// window.Kredits = contract;
return contract; return contract;
}.property('kreditsContractInstance', 'web3'), }.property('kreditsContractInstance', 'web3'),
@@ -97,37 +98,36 @@ export default Service.extend({
}); });
}, },
getContributorData(i) { getContributorData(id) {
let promise = new Ember.RSVP.Promise((resolve, reject) => { let kredits = this.get('kreditsContract');
this.getValueFromContract('kreditsContract', 'contributorAddresses', i).then(address => {
this.getValueFromContract('kreditsContract', 'contributors', address).then(person => {
this.getValueFromContract('tokenContract', 'balanceOf', address).then(balance => {
Ember.Logger.debug('[kredits] person', address, person);
let contributor = Contributor.create({ let promise = new Ember.RSVP.Promise((resolve, reject) => {
address: address, kredits.getContributor(id).then(contributorData => {
ipfsHash: person[2], Ember.Logger.debug('[kredits] contributor', contributorData);
kredits: balance.toNumber(), let contributor = Contributor.create(contributorData);
isCurrentUser: this.get('currentUserAccounts').includes(address) contributor.set('isCurrentUser', this.get('currentUserAccounts').includes(contributor.address));
});
this.getValueFromContract('tokenContract', 'balanceOf', contributor.address).then(balance => {
contributor.set('kredits', balance.toNumber());
contributor.loadProfile(this.get('ipfs')).then( contributor.loadProfile(this.get('ipfs')).then(
() => resolve(contributor), () => resolve(contributor),
err => reject(err) err => reject(err)
); );
}); });
});
}).catch(err => reject(err)); }).catch(err => reject(err));
}); });
return promise; return promise;
}, },
getContributors() { getContributors() {
return this.getValueFromContract('kreditsContract', 'contributorsCount').then(contributorsCount => { return this.get('kreditsContract').contributorsCount().then(contributorsCount => {
Ember.Logger.debug('[kredits] contributorsCount:', contributorsCount.toNumber());
let contributors = []; let contributors = [];
for(var i = 0; i < contributorsCount.toNumber(); i++) { for(var id = 1; id <= contributorsCount.toNumber(); id++) {
contributors.push(this.getContributorData(i)); contributors.push(this.getContributorData(id));
} }
return Ember.RSVP.all(contributors); return Ember.RSVP.all(contributors);
@@ -136,7 +136,7 @@ export default Service.extend({
getProposalData(i) { getProposalData(i) {
let promise = new Ember.RSVP.Promise((resolve, reject) => { let promise = new Ember.RSVP.Promise((resolve, reject) => {
this.getValueFromContract('kreditsContract', 'proposals', i).then(p => { this.get('kreditsContract').proposals(i).then(p => {
let proposal = Proposal.create({ let proposal = Proposal.create({
id : i, id : i,
creatorAddress : p[0], creatorAddress : p[0],
@@ -164,7 +164,7 @@ export default Service.extend({
}, },
getProposals() { getProposals() {
return this.getValueFromContract('kreditsContract', 'proposalsCount').then(proposalsCount => { return this.get('kreditsContract').proposalsCount().then(proposalsCount => {
let proposals = []; let proposals = [];
for(var i = 0; i < proposalsCount.toNumber(); i++) { for(var i = 0; i < proposalsCount.toNumber(); i++) {
@@ -226,8 +226,8 @@ export default Service.extend({
}); });
}, },
// logKreditsContract: function() { logOperatorContract: function() {
// Ember.Logger.debug('[kredits] kreditsContract', this.get('kreditsContract')); Ember.Logger.debug('[kredits] operatorContract', this.get('kreditsContract'));
// }.on('init') }.on('init')
}); });
+11 -4
View File
@@ -43,16 +43,23 @@ module.exports = function(environment) {
} }
}; };
if (process.env.KREDITS_CONTRACT_ADDR) { ENV.contractMetadata['networkId'] = "17";
ENV.contractMetadata['Kredits'] = { address: process.env.KREDITS_CONTRACT_ADDR };
if (process.env.OPERATOR_CONTRACT_ADDR) {
ENV.contractMetadata['Operator'] = {
address: process.env.OPERATOR_CONTRACT_ADDR,
networkId: ENV.contractMetadata['networkId']
};
} }
if (process.env.TOKEN_CONTRACT_ADDR) { if (process.env.TOKEN_CONTRACT_ADDR) {
ENV.contractMetadata['Token'] = { address: process.env.TOKEN_CONTRACT_ADDR }; ENV.contractMetadata['Token'] = {
address: process.env.TOKEN_CONTRACT_ADDR,
networkId: ENV.contractMetadata['networkId']
};
} }
if (process.env.WEB3_PROVIDER_URL) { if (process.env.WEB3_PROVIDER_URL) {
ENV.web3ProviderUrl = process.env.WEB3_PROVIDER_URL; ENV.web3ProviderUrl = process.env.WEB3_PROVIDER_URL;
} }
ENV.contractMetadata['networkId'] = "17";
if (environment === 'development') { if (environment === 'development') {
// ENV.APP.LOG_RESOLVER = true; // ENV.APP.LOG_RESOLVER = true;
+12478
View File
File diff suppressed because it is too large Load Diff
+5 -4
View File
@@ -16,7 +16,7 @@
"repository": "https://github.com/67P/kredits-web", "repository": "https://github.com/67P/kredits-web",
"scripts": { "scripts": {
"start": "ember server", "start": "ember server",
"start-local": "WEB3_PROVIDER_URL=http://localhost:8545 KREDITS_PROVIDER_URL=http://localhost:8545 KREDITS_CONTRACT_ADDR=`kredits-inspect -c Kredits -r -w address` TOKEN_CONTRACT_ADDR=`kredits-inspect -c Token -r -w address` npm start", "start-local": "WEB3_PROVIDER_URL=http://localhost:8545 KREDITS_PROVIDER_URL=http://localhost:8545 OPERATOR_CONTRACT_ADDR=`kredits-inspect -c Operator -r -w address` TOKEN_CONTRACT_ADDR=`kredits-inspect -c Token -r -w address` npm start",
"test": "ember test", "test": "ember test",
"postinstall": "bower install", "postinstall": "bower install",
"build": "ember build", "build": "ember build",
@@ -27,7 +27,8 @@
"kredits-parity": "kredits-parity", "kredits-parity": "kredits-parity",
"kredits-deploy": "kredits-deploy", "kredits-deploy": "kredits-deploy",
"kredits-inspect": "kredits-inspect", "kredits-inspect": "kredits-inspect",
"kredits-seed": "kredits-seed" "kredits-seed": "kredits-seed",
"kredits-watch": "kredits-watch"
}, },
"devDependencies": { "devDependencies": {
"babel-preset-es2015": "^6.22.0", "babel-preset-es2015": "^6.22.0",
@@ -45,7 +46,7 @@
"ember-cli-jshint": "^2.0.1", "ember-cli-jshint": "^2.0.1",
"ember-cli-qunit": "^3.0.1", "ember-cli-qunit": "^3.0.1",
"ember-cli-release": "^0.2.9", "ember-cli-release": "^0.2.9",
"ember-cli-sass": "6.1.1", "ember-cli-sass": "^7.0.0",
"ember-cli-sri": "^2.1.0", "ember-cli-sri": "^2.1.0",
"ember-cli-test-loader": "^1.1.0", "ember-cli-test-loader": "^1.1.0",
"ember-cli-uglify": "^1.2.0", "ember-cli-uglify": "^1.2.0",
@@ -56,7 +57,7 @@
"ember-truth-helpers": "1.3.0", "ember-truth-helpers": "1.3.0",
"ipfs-api": "^12.1.7", "ipfs-api": "^12.1.7",
"kosmos-schemas": "~1.1.1", "kosmos-schemas": "~1.1.1",
"kredits-contracts": "^2.4.0", "kredits-contracts": "github:67P/kredits-contracts#operator",
"loader.js": "^4.0.10", "loader.js": "^4.0.10",
"tv4": "^1.3.0", "tv4": "^1.3.0",
"uuid": "^3.0.1", "uuid": "^3.0.1",