Skip to content

Commit

Permalink
added add user as admin
Browse files Browse the repository at this point in the history
  • Loading branch information
StupidCodeFactory committed Mar 11, 2016
1 parent fe52c85 commit 900dbba
Show file tree
Hide file tree
Showing 16 changed files with 217 additions and 53 deletions.
14 changes: 11 additions & 3 deletions app/javascripts/actions/admin_action_creator.js
Expand Up @@ -2,10 +2,18 @@ var Dispatcher = require('../dispatcher/dispatcher');
var ActionTypes = require('../constants/dapps_constants').ActionTypes;

module.exports = {
get: function (account) {
updated: function (account, value) {
Dispatcher.dispatch({
type: ActionTypes.GET_BALANCE,
account: account
type: ActionTypes.ADMIN_RECEIVED,
account: account,
admin: value
});
},
set: function (account, value) {
Dispatcher.dispatch({
type: ActionTypes.SET_ADMIN,
account: account,
admin: value
});
}
};
1 change: 0 additions & 1 deletion app/javascripts/actions/current_account.js
Expand Up @@ -3,7 +3,6 @@ var ActionTypes = require('../constants/dapps_constants').ActionTypes;

module.exports = {
select: function (account) {
console.log(account);
Dispatcher.dispatch({
type: ActionTypes.CURRENT_ACCOUNT_SELECTED,
account: account
Expand Down
6 changes: 3 additions & 3 deletions app/javascripts/components/account_list.jsx
Expand Up @@ -13,8 +13,7 @@ var AccountListing = React.createClass({
getInitialState: function () {
return getStateFromStores();
},
componentwillMount: function () {
ServiceAccount.getAccounts();
componentWillMount: function () {
},
componentDidMount: function() {
AccountStore.addChangeEvent(this._onChange);
Expand All @@ -34,7 +33,7 @@ var AccountListing = React.createClass({
<tr>
<th>Accounts</th>
<th>Balances</th>
<th colSpan="2">Actions</th>
<th colSpan="3">Actions</th>
</tr>
</thead>
<tbody>
Expand All @@ -45,6 +44,7 @@ var AccountListing = React.createClass({
);
},
_onChange: function() {
console.log('accout list on change');
this.setState(getStateFromStores());
}
});
Expand Down
8 changes: 5 additions & 3 deletions app/javascripts/components/account_list_item.jsx
@@ -1,12 +1,12 @@
var React = require('react');
var SendCoinForm = require('./send_coin_form');
var MintCoinForm = require('./mint_coint');
var AdminForm = require('./admin_form');
var BalanceStore = require('../stores/balance_store');
var AdminStore = require('../stores/admin');
var BalanceActionCreator = require('../actions/balance_action_creator.js');

function getStateFromStores(accountId) {
return { account: accountId, balance: BalanceStore.get(accountId), admin: };
return { account: accountId, balance: BalanceStore.get(accountId) };
}

var AccountListItem = React.createClass({
Expand All @@ -17,6 +17,7 @@ var AccountListItem = React.createClass({
BalanceStore.addChangeEvent(this._onChange);
},
componentDidMount: function () {

},
render: function () {
return (
Expand All @@ -25,12 +26,13 @@ var AccountListItem = React.createClass({
<td>{this.state.balance}</td>
<td><SendCoinForm from={this.state.account}/></td>
<td><MintCoinForm receiver={this.state.account}/></td>
<td><AdminForm account={this.state.account}/></td>
</tr>
)
},
_onChange: function() {
this.setState(getStateFromStores(this.props.account));
}
},
});

module.exports = AccountListItem;
5 changes: 3 additions & 2 deletions app/javascripts/components/account_select.jsx
@@ -1,5 +1,6 @@
var React = require('react');
var AccountStore = require('../stores/account_store');
var CurrentAccountAction = require('../actions/current_account');
var ServiceAccount = require('../services/accounts');

var AccountSelect = React.createClass({
Expand All @@ -8,18 +9,18 @@ var AccountSelect = React.createClass({
},
componentWillMount: function () {
AccountStore.addChangeEvent(this._onChange);
ServiceAccount.getAccounts();
},
_onChange: function () {
this.setState({ accounts: AccountStore.getAll(true) });
},
render: function () {

var accountOptions = [];
var accountOptions = [<option key="0">Select an account</option>];

for(var account in this.state.accounts) {
accountOptions.push(<option key={account} value={account}>{account}</option>);
};

return (
<select name={this.props.name} onChange={this.props.handleOnAccountSelect}>
{accountOptions}
Expand Down
39 changes: 39 additions & 0 deletions app/javascripts/components/admin_form.js
@@ -0,0 +1,39 @@
var React = require('react');
var AdminActionCreator = require('../actions/admin_action_creator');
var AdminStore = require('../stores/admin');

function getInitialStateFromStore(accountId) {

return { admin: AdminStore.get(accountId) };
}

var AdminForm = React.createClass({
getInitialState: function () {
return getInitialStateFromStore(this.props.account);
},
onAdminChange: function (event) {
this.setState({admin: event.target.checked});
AdminActionCreator.set(this.props.account, event.target.checked);
},
componentWillMount: function () {
AdminStore.addChangeEvent(this._onChange);
},
_onChange: function() {
return this.setState(getInitialStateFromStore(this.props.account));
},
render: function() {
console.log(this.state);
return (
<form className="pure-form">
<label forHtml="admin">
<input type="checkbox" name="admin" onChange={this.onAdminChange} checked={this.state.admin} />
Admin
</label>
</form>
)

}

});

module.exports = AdminForm;
1 change: 0 additions & 1 deletion app/javascripts/components/menu.jsx
Expand Up @@ -18,7 +18,6 @@ var TopMenu = React.createClass({
</li>,
<li key="accounts" className="pure-menu-item pure-menu-has-children pure-menu-allow-hover">
<form className="pure-form">
<label>Select operating account</label>
<AccountSelect name="currentAccount" handleOnAccountSelect={this.handleOnAccountSelect} />
</form>
</li>
Expand Down
4 changes: 2 additions & 2 deletions app/javascripts/components/new_product.jsx
Expand Up @@ -2,13 +2,13 @@ var React = require('react');
var ProductWriteActionCreator = require('../actions/product_write_action_creator');
var NewProductStore = require('../stores/new_product');

function getInitialstate () {
function getInitialStateFromStore () {
return NewProductStore.get();
}

var NewProduct = React.createClass({
getInitialState: function () {
return getInitialstate();
return getInitialStateFromStore();
},
onProductChange: function (event) {
var state = {}
Expand Down
2 changes: 1 addition & 1 deletion app/javascripts/constants/dapps_constants.js
Expand Up @@ -14,6 +14,6 @@ module.exports = {
UPDATE_PRODUCT: null,
PRODUCT_UPDATED: null,
CURRENT_ACCOUNT_SELECTED: null,
ADMIN_RECEIVED: null
ADMIN_RECEIVED: null,
})
};
78 changes: 47 additions & 31 deletions app/javascripts/services/admin.js
@@ -1,35 +1,51 @@
var Dispatcher = require('../dispatcher/dispatcher');
var EventEmitter = require('events').EventEmitter;
var assign = require('object-assign');
var ActionTypes = require('../constants/dapps_constants').ActionTypes;
var AccountStore = require('../stores/account_store');
var AdminService = require('../services/admin');
var _admins = {};
var CHANGE_EVENT = 'change';
var web3 = require('./web3');
var CurrentAccount = require('../stores/current_account');
var AdminActionCreator = require('../actions/admin_action_creator');
var Pudding = require('ether-pudding');
Pudding.setWeb3(web3);
Admin.load(Pudding);

var _admins = {};
var AdminStore = assign({}, EventEmitter.prototype, {
get: function (account) {
return _admins[account];
},
set: function (account, value) {
_admins[account] = value;
},
emitChange: function() {
this.emit(CHANGE_EVENT);
},
addChangeEvent: function (callback) {
this.on(CHANGE_EVENT, callback);
}
});
var AdminService = function (AdminContract) {
function WatchForAdminReceived(accountId) {
var event = AdminContract.WatchForAdminReceived({account_id: accountId}, {toBlock: 'latest'});
event.watch(function (error, result) {
if (error) {
throw error;
}

AdminStore.dispatchToken = Dispatcher.register(function (action) {
switch(action.type) {
case ActionTypes.ADMIN_RECEIVED:
AdminStore.set(action.account, action.admin);
AdminStore.emitChange();
break;
default:
AdminActionCreator.updated(result.args.account, result.args.admin);
event.stopWatching();
});

}
});
function WatchForAdminChanged(accountId) {
var event = AdminContract.OnAdminChanged({account_id: accountId}, {toBlock: 'latest'});
event.watch(function (error, result) {
if (error) {
throw error;
}
console.log('WatchForAdminChanged');
AdminActionCreator.updated(result.args.account, result.args.admin);
event.stopWatching();
});
}

return {
get: function (account) {
AdminContract.get(account, {from: CurrentAccount.get()}).then(function () {
WatchForAdminReceived(account);
}).catch(function (error) {
throw error;
});
},
set: function (account, admin) {
AdminContract.set(account, admin, {from: CurrentAccount.get(), gas: 500000}).then(function () {
WatchForAdminChanged(account);
}).catch(function (error) {
throw error;
});
}
};
};

module.exports = new AdminService(Admin.deployed());
2 changes: 1 addition & 1 deletion app/javascripts/services/product.js
Expand Up @@ -60,7 +60,7 @@ var ShopService = function (shop) {
product.price,
product.quantity,
product.description,
{from: CurrentAccount.get(), gas: 500000}
{from: CurrentAccount.get(), gas: 1000000}
).then(function(res) {
console.log('res');
console.log(res);
Expand Down
2 changes: 1 addition & 1 deletion app/javascripts/stores/account_store.js
@@ -1,7 +1,6 @@
var Dispatcher = require('../dispatcher/dispatcher');
var EventEmitter = require('events').EventEmitter;
var assign = require('object-assign');
var BalanceStore = require('../stores/balance_store');
var Promise = require('bluebird');
var DappsConstants = require('../constants/dapps_constants');

Expand Down Expand Up @@ -31,6 +30,7 @@ var AccountStore = (assign({}, EventEmitter.prototype, {


AccountStore.dispatchToken = Dispatcher.register(function (action) {

switch(action.type) {
case ActionTypes.RECEIVE_RAW_ACCOUNT:
AccountStore.init(action.rawAccounts);
Expand Down
48 changes: 48 additions & 0 deletions app/javascripts/stores/admin.js
@@ -0,0 +1,48 @@
var Dispatcher = require('../dispatcher/dispatcher');
var EventEmitter = require('events').EventEmitter;
var assign = require('object-assign');
var ActionTypes = require('../constants/dapps_constants').ActionTypes;
var AccountStore = require('../stores/account_store');
var CurrentAccountStore = require('../stores/current_account');
var AdminService = require('../services/admin');
var _admins = {};
var CHANGE_EVENT = 'change';

var _admins = {};
var AdminStore = assign({}, EventEmitter.prototype, {
get: function (account) {
return _admins[account] || false;
},
set: function (account, value) {
_admins[account] = value;
},
emitChange: function() {
this.emit(CHANGE_EVENT);
},
addChangeEvent: function (callback) {
this.on(CHANGE_EVENT, callback);
}
});

AdminStore.dispatchToken = Dispatcher.register(function (action) {
switch(action.type) {
case ActionTypes.SET_ADMIN:
AdminService.set(action.account, action.admin);
break;
case ActionTypes.ADMIN_RECEIVED:
console.log(ActionTypes.ADMIN_RECEIVED);
AdminStore.set(action.account, action.admin);
AdminStore.emitChange();
break;
case ActionTypes.RECEIVE_RAW_ACCOUNT:
Dispatcher.waitFor([AccountStore.dispatchToken, CurrentAccountStore.dispatchToken]);
action.rawAccounts.forEach(function (account) {
AdminService.get(account);
});
break;
default:

}
});

module.exports = AdminStore;
8 changes: 7 additions & 1 deletion app/javascripts/stores/current_account.js
Expand Up @@ -2,6 +2,7 @@ var Dispatcher = require('../dispatcher/dispatcher');
var EventEmitter = require('events').EventEmitter;
var assign = require('object-assign');
var AccountStore = require('./account_store');
var CurrentAccountActionCreator = require('../actions/current_account');
var ActionTypes = require('../constants/dapps_constants').ActionTypes;

var _account = null;
Expand All @@ -24,9 +25,14 @@ var CurrentAccount = (assign({}, EventEmitter.prototype, {
}));

CurrentAccount.dispatchToken = Dispatcher.register(function (action) {
Dispatcher.waitFor([AccountStore.dispatchToken]);


switch(action.type) {
case ActionTypes.RECEIVE_RAW_ACCOUNT:
Dispatcher.waitFor([AccountStore.dispatchToken]);
CurrentAccount.set(action.rawAccounts[0]);
CurrentAccount.emitChange();
break;
case ActionTypes.CURRENT_ACCOUNT_SELECTED:
CurrentAccount.set(action.account);
CurrentAccount.emitChange();
Expand Down

0 comments on commit 900dbba

Please sign in to comment.