Get contributions from minted events (WIP)
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
import Ember from 'ember';
|
||||
|
||||
export default Ember.Object.extend({
|
||||
|
||||
// blockNumber: null,
|
||||
// blockHash: null,
|
||||
// transactionHash: null,
|
||||
recipientAddress: null,
|
||||
contributorId: null,
|
||||
ipfsHash: null,
|
||||
amount: null,
|
||||
|
||||
contribution: null,
|
||||
kind: null,
|
||||
description: null,
|
||||
url: null,
|
||||
details: null,
|
||||
|
||||
/**
|
||||
* Loads the contribution details from IPFS and sets local instance
|
||||
* properties from it
|
||||
*
|
||||
* @method
|
||||
* @public
|
||||
*/
|
||||
loadDetails(ipfs) {
|
||||
let promise = new Ember.RSVP.Promise((resolve, reject) => {
|
||||
ipfs.getFile(this.get('ipfsHash')).then(content => {
|
||||
let contributionJSON = JSON.parse(content);
|
||||
let contribution = Ember.Object.create(contributionJSON);
|
||||
|
||||
this.setProperties({
|
||||
kind: contribution.get('kind'),
|
||||
description: contribution.get('description'),
|
||||
url: contribution.get('url')
|
||||
});
|
||||
|
||||
// TODO load details
|
||||
// let details = profile.get('accounts');
|
||||
|
||||
Ember.Logger.debug('[proposal] loaded contribution details', contributionJSON);
|
||||
resolve();
|
||||
}).catch((err) => {
|
||||
Ember.Logger.error('[proposal] error trying to load contribution details', this.get('ipfsHash'), err);
|
||||
reject(err);
|
||||
});
|
||||
});
|
||||
|
||||
return promise;
|
||||
},
|
||||
|
||||
});
|
||||
@@ -26,6 +26,7 @@ export default Ember.Route.extend({
|
||||
contributors: kredits.getContributors(),
|
||||
totalSupply: kredits.getValueFromContract('tokenContract', 'totalSupply'),
|
||||
proposals: kredits.getProposals(),
|
||||
contributions: kredits.getContributions(),
|
||||
newContributor: Contributor.create({ kind: 'person' })
|
||||
});
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ import Web3 from 'npm:web3';
|
||||
import config from 'kredits-web/config/environment';
|
||||
import Contributor from 'kredits-web/models/contributor';
|
||||
import Proposal from 'kredits-web/models/proposal';
|
||||
import Contribution from 'kredits-web/models/contribution';
|
||||
import kreditsContracts from 'npm:kredits-contracts';
|
||||
import uuid from 'npm:uuid';
|
||||
|
||||
@@ -226,6 +227,56 @@ export default Service.extend({
|
||||
});
|
||||
},
|
||||
|
||||
getTokenMintedEvents(fromBlock=0, toBlock='latest') {
|
||||
return new Ember.RSVP.Promise((resolve, reject) => {
|
||||
const minted = this.get('tokenContract')
|
||||
.Minted({}, {fromBlock: fromBlock, toBlock: toBlock});
|
||||
|
||||
minted.get((err, res) => {
|
||||
if (err) {
|
||||
Ember.Logger.error('[kredits] Error reading Token#Minted events', res);
|
||||
reject(err);
|
||||
return;
|
||||
}
|
||||
Ember.Logger.warn('[kredits] Token#Minted events', res);
|
||||
resolve(res);
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
getContributions() {
|
||||
// this.getTokenMintedEvents().then(events => {
|
||||
let contributions = [];
|
||||
|
||||
config.fixtures.mintedEvents.forEach(mintedEvent => {
|
||||
contributions.push(this.getContributionData(mintedEvent));
|
||||
});
|
||||
|
||||
return Ember.RSVP.all(contributions);
|
||||
// });
|
||||
},
|
||||
|
||||
getContributionData(mintedEvent) {
|
||||
return new Ember.RSVP.Promise((resolve, reject) => {
|
||||
let contribution = Contribution.create({
|
||||
recipientAddress: mintedEvent.args.recipientAddress,
|
||||
contributorId: mintedEvent.args.contributorId,
|
||||
amount: mintedEvent.args.amount,
|
||||
ipfsHash: mintedEvent.args.reference
|
||||
});
|
||||
|
||||
if (contribution.get('ipfsHash')) {
|
||||
contribution.loadDetails(this.get('ipfs')).then(
|
||||
() => resolve(contribution),
|
||||
err => reject(err)
|
||||
);
|
||||
} else {
|
||||
Ember.Logger.warn('[kredits] contribution from Minted event is missing IPFS hash', contribution);
|
||||
resolve(contribution);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// logKreditsContract: function() {
|
||||
// Ember.Logger.debug('[kredits] kreditsContract', this.get('kreditsContract'));
|
||||
// }.on('init')
|
||||
|
||||
Reference in New Issue
Block a user