Public node WASM, performance and fixes (#5734)

This commit is contained in:
Maciej Hirsz
2017-06-12 15:57:16 +02:00
committed by Arkadiy Paronyan
parent edea41d35e
commit b2a42f03eb
32 changed files with 739 additions and 129 deletions

View File

@@ -41,6 +41,7 @@ class Accounts extends Component {
static propTypes = {
accounts: PropTypes.object.isRequired,
accountsInfo: PropTypes.object.isRequired,
availability: PropTypes.string.isRequired,
hasAccounts: PropTypes.bool.isRequired,
setVisibleAccounts: PropTypes.func.isRequired
}
@@ -249,21 +250,7 @@ class Accounts extends Component {
renderActionbar () {
const buttons = [
<Link
to='/vaults'
key='vaults'
>
<Button
icon={ <KeyIcon /> }
label={
<FormattedMessage
id='accounts.button.vaults'
defaultMessage='vaults'
/>
}
onClick={ this.onVaultsClick }
/>
</Link>,
this.renderVaultsButton(),
<Button
key='newAccount'
icon={ <AddIcon /> }
@@ -275,17 +262,7 @@ class Accounts extends Component {
}
onClick={ this.onNewAccountClick }
/>,
<Button
key='newWallet'
icon={ <AddIcon /> }
label={
<FormattedMessage
id='accounts.button.newWallet'
defaultMessage='wallet'
/>
}
onClick={ this.onNewWalletClick }
/>,
this.renderNewWalletButton(),
<Button
key='restoreAccount'
icon={ <AddIcon /> }
@@ -370,6 +347,50 @@ class Accounts extends Component {
);
}
renderVaultsButton () {
if (this.props.availability !== 'personal') {
return null;
}
return (
<Link
to='/vaults'
key='vaults'
>
<Button
icon={ <KeyIcon /> }
label={
<FormattedMessage
id='accounts.button.vaults'
defaultMessage='vaults'
/>
}
onClick={ this.onVaultsClick }
/>
</Link>
);
}
renderNewWalletButton () {
if (this.props.availability !== 'personal') {
return null;
}
return (
<Button
key='newWallet'
icon={ <AddIcon /> }
label={
<FormattedMessage
id='accounts.button.newWallet'
defaultMessage='wallet'
/>
}
onClick={ this.onNewWalletClick }
/>
);
}
renderNewWalletDialog () {
const { accounts } = this.props;
const { newWalletDialog } = this.state;
@@ -474,10 +495,12 @@ class Accounts extends Component {
function mapStateToProps (state) {
const { accounts, accountsInfo, hasAccounts } = state.personal;
const { availability = 'unknown' } = state.nodeStatus.nodeKind || {};
return {
accounts,
accountsInfo,
availability,
hasAccounts
};
}

View File

@@ -99,11 +99,19 @@ function mapStateToProps (initState) {
}));
return (state) => {
const { availability = 'unknown' } = state.nodeStatus.nodeKind || {};
const { views } = state.settings;
const viewIds = Object
.keys(views)
.filter((id) => views[id].fixed || views[id].active);
.filter((id) => {
const view = views[id];
const isEnabled = view.fixed || view.active;
const isAllowed = !view.onlyPersonal || availability === 'personal';
return isEnabled && isAllowed;
});
if (isEqual(viewIds, filteredViewIds)) {
return { views: filteredViews };

View File

@@ -63,7 +63,8 @@
"author": "Parity Team <admin@parity.io>",
"version": "1.0.0",
"visible": false,
"secure": true
"secure": true,
"onlyPersonal": true
},
{
"id": "0xae74ad174b95cdbd01c88ac5b73a296d33e9088fc2a200e76bcedf3a94a7815d",
@@ -94,6 +95,7 @@
"version": "1.0.0",
"visible": true,
"skipBuild": true,
"skipHistory": true
"skipHistory": true,
"onlyPersonal": true
}
]

View File

@@ -34,10 +34,11 @@ import styles from './dapps.css';
class Dapps extends Component {
static contextTypes = {
api: PropTypes.object.isRequired
}
};
static propTypes = {
accounts: PropTypes.object.isRequired
accounts: PropTypes.object.isRequired,
availability: PropTypes.string.isRequired
};
store = DappsStore.get(this.context.api);
@@ -133,6 +134,10 @@ class Dapps extends Component {
}
renderApp = (app) => {
if (app.onlyPersonal && this.props.availability !== 'personal') {
return null;
}
return (
<DappCard
app={ app }
@@ -156,6 +161,7 @@ class Dapps extends Component {
function mapStateToProps (state) {
const { accounts } = state.personal;
const { availability = 'unknown' } = state.nodeStatus.nodeKind || {};
/**
* Do not show the Wallet Accounts in the Dapps
@@ -165,7 +171,8 @@ function mapStateToProps (state) {
const _accounts = omitBy(accounts, (account) => account.wallet);
return {
accounts: _accounts
accounts: _accounts,
availability
};
}

View File

@@ -16,6 +16,7 @@
import { observer } from 'mobx-react';
import React, { Component, PropTypes } from 'react';
import { connect } from 'react-redux';
import { FormattedMessage } from 'react-intl';
import HistoryStore from '~/mobx/historyStore';
@@ -32,11 +33,15 @@ import Urls from './Urls';
import styles from './home.css';
@observer
export default class Home extends Component {
class Home extends Component {
static contextTypes = {
api: PropTypes.object.isRequired
};
static propTypes = {
availability: PropTypes.string.isRequired
};
dappsStore = DappsStore.get(this.context.api);
extensionStore = ExtensionStore.get();
webStore = WebStore.get(this.context.api);
@@ -49,6 +54,13 @@ export default class Home extends Component {
}
render () {
const urls = this.props.availability !== 'personal' ? null : (
<Urls
extensionStore={ this.extensionStore }
store={ this.webStore }
/>
);
return (
<Page
className={ styles.body }
@@ -60,10 +72,7 @@ export default class Home extends Component {
}
>
<News />
<Urls
extensionStore={ this.extensionStore }
store={ this.webStore }
/>
{ urls }
<div className={ styles.row }>
<div className={ styles.column }>
<Dapps
@@ -79,3 +88,16 @@ export default class Home extends Component {
);
}
}
function mapStateToProps (initState) {
return (state) => {
const { availability = 'unknown' } = state.nodeStatus.nodeKind || {};
return { availability };
};
}
export default connect(
mapStateToProps,
null
)(Home);

View File

@@ -59,6 +59,7 @@ const defaultViews = {
contracts: {
active: false,
onlyPersonal: true,
icon: <ContactsIcon />,
route: '/contracts',
value: 'contract'
@@ -66,6 +67,7 @@ const defaultViews = {
status: {
active: false,
onlyPersonal: true,
icon: <StatusIcon />,
route: '/status',
value: 'status'

View File

@@ -30,7 +30,8 @@ import styles from './views.css';
class Views extends Component {
static propTypes = {
settings: PropTypes.object.isRequired,
toggleView: PropTypes.func.isRequired
toggleView: PropTypes.func.isRequired,
availability: PropTypes.string.isRequired
}
render () {
@@ -168,6 +169,10 @@ class Views extends Component {
const toggle = () => toggleView(id);
const view = settings.views[id];
if (view.onlyPersonal && this.props.availability !== 'personal') {
return null;
}
return (
<div className={ styles.view } key={ id }>
<Checkbox
@@ -196,8 +201,9 @@ class Views extends Component {
function mapStateToProps (state) {
const { settings } = state;
const { availability = 'unknown' } = state.nodeStatus.nodeKind || {};
return { settings };
return { settings, availability };
}
function mapDispatchToProps (dispatch) {