From 5f108557cc4fcc81126e225b3aa40901d3f41b77 Mon Sep 17 00:00:00 2001 From: Sebastian Kippe Date: Thu, 2 Feb 2017 17:27:50 +0800 Subject: [PATCH] Add Web3 library and service --- app/controllers/index.js | 7 ++++- app/services/kredits.js | 40 +++++++++++++++++++++++++++++ app/templates/index.hbs | 2 +- package.json | 4 ++- tests/unit/services/kredits-test.js | 12 +++++++++ 5 files changed, 62 insertions(+), 3 deletions(-) create mode 100644 app/services/kredits.js create mode 100644 tests/unit/services/kredits-test.js diff --git a/app/controllers/index.js b/app/controllers/index.js index fddb970..574b4c6 100644 --- a/app/controllers/index.js +++ b/app/controllers/index.js @@ -1,11 +1,16 @@ import Ember from 'ember'; const { - computed + computed, + inject: { + service + } } = Ember; export default Ember.Controller.extend({ + kredits: service(), + contributorsCount: computed('model.contributors.[]', function() { return this.get('model.contributors').length; }), diff --git a/app/services/kredits.js b/app/services/kredits.js new file mode 100644 index 0000000..dbf8c42 --- /dev/null +++ b/app/services/kredits.js @@ -0,0 +1,40 @@ +import Ember from 'ember'; +import Web3 from 'npm:web3'; + +export default Ember.Service.extend({ + + web3Instance: null, + + web3: function() { + if (Ember.isPresent(this.get('web3Instance'))) { + return this.get('web3Instance'); + } + + let web3Instance; + + if (typeof window.web3 !== 'undefined') { + Ember.Logger.debug('[web3] Using user-provided instance, e.g. from Mist browser or Metamask'); + web3Instance = window.web3; + } else { + Ember.Logger.debug('[web3] Creating new instance from npm module class'); + let provider = new Web3.providers.HttpProvider("http://localhost:8545"); + web3Instance = new Web3(provider); + } + + this.set('web3Instance', web3Instance); + + return web3Instance; + }.property('web3Instance'), + + contract: function() { + // let web3 = this.get('web3'); + let contract = null; + + return contract; + }.property('web3'), + + totalSupply: function() { + return 23000; + }.property() + +}); diff --git a/app/templates/index.hbs b/app/templates/index.hbs index b7f14f2..ee779e2 100644 --- a/app/templates/index.hbs +++ b/app/templates/index.hbs @@ -8,7 +8,7 @@ {{contributor-list contributors=model.contributors}}

- {{kreditsSum}} kredits issued and distributed among + {{kredits.totalSupply}} kredits issued and distributed among {{contributorsCount}} contributors.

diff --git a/package.json b/package.json index 4a36641..0623470 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "devDependencies": { "broccoli-asset-rev": "^2.4.5", "ember-ajax": "^2.4.1", + "ember-browserify": "^1.1.13", "ember-cli": "2.10.0", "ember-cli-app-version": "^2.0.0", "ember-cli-babel": "^5.1.7", @@ -34,7 +35,8 @@ "ember-export-application-global": "^1.0.5", "ember-load-initializers": "^0.5.1", "ember-resolver": "^2.0.3", - "loader.js": "^4.0.10" + "loader.js": "^4.0.10", + "web3": "^0.18.2" }, "engines": { "node": ">= 0.12.0" diff --git a/tests/unit/services/kredits-test.js b/tests/unit/services/kredits-test.js new file mode 100644 index 0000000..2bfed3b --- /dev/null +++ b/tests/unit/services/kredits-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('service:kredits', 'Unit | Service | kredits', { + // Specify the other units that are required for this test. + // needs: ['service:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + let service = this.subject(); + assert.ok(service); +});