Navigate to dapp from dapp (WIP)
This commit is contained in:
parent
2e1b05940f
commit
719023e949
@ -5,7 +5,8 @@
|
|||||||
"description": "Deploy all basic contracts, names & applications to the network",
|
"description": "Deploy all basic contracts, names & applications to the network",
|
||||||
"author": "Parity Team <admin@ethcore.io>",
|
"author": "Parity Team <admin@ethcore.io>",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"visible": false
|
"visible": false,
|
||||||
|
"noselect": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "0xf9f2d620c2e08f83e45555247146c62185e4ab7cf82a4b9002a265a0d020348f",
|
"id": "0xf9f2d620c2e08f83e45555247146c62185e4ab7cf82a4b9002a265a0d020348f",
|
||||||
|
@ -10,6 +10,18 @@
|
|||||||
"visible": true,
|
"visible": true,
|
||||||
"secure": true
|
"secure": true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "account",
|
||||||
|
"url": "account",
|
||||||
|
"src": "Account",
|
||||||
|
"name": "Account",
|
||||||
|
"description": "Display a single account",
|
||||||
|
"author": "Parity Team <admin@ethcore.io>",
|
||||||
|
"version": "2.0.0",
|
||||||
|
"visible": true,
|
||||||
|
"secure": true,
|
||||||
|
"noselect": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "addresses",
|
"id": "addresses",
|
||||||
"url": "addresses",
|
"url": "addresses",
|
||||||
|
@ -66,6 +66,15 @@ const childRoutes = [
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: 'app/:id/:details',
|
||||||
|
component: Dapp,
|
||||||
|
onEnter: ({ params }) => {
|
||||||
|
if (!dapps[params.id] || !dapps[params.id].skipHistory) {
|
||||||
|
dappsHistory.add(params.id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
{ path: 'apps', component: Dapps },
|
{ path: 'apps', component: Dapps },
|
||||||
{ path: 'web', component: Web },
|
{ path: 'web', component: Web },
|
||||||
{ path: 'web/:url', component: Web }
|
{ path: 'web/:url', component: Web }
|
||||||
|
@ -20,6 +20,7 @@ import { Card } from 'material-ui/Card';
|
|||||||
|
|
||||||
import { nodeOrStringProptype } from '~/util/proptypes';
|
import { nodeOrStringProptype } from '~/util/proptypes';
|
||||||
|
|
||||||
|
import DappLink from '../DappLink';
|
||||||
import Title from './Title';
|
import Title from './Title';
|
||||||
|
|
||||||
import styles from './container.css';
|
import styles from './container.css';
|
||||||
@ -29,6 +30,7 @@ export default class Container extends Component {
|
|||||||
children: PropTypes.node,
|
children: PropTypes.node,
|
||||||
className: PropTypes.string,
|
className: PropTypes.string,
|
||||||
compact: PropTypes.bool,
|
compact: PropTypes.bool,
|
||||||
|
dappLink: PropTypes.bool,
|
||||||
hover: PropTypes.node,
|
hover: PropTypes.node,
|
||||||
light: PropTypes.bool,
|
light: PropTypes.bool,
|
||||||
link: PropTypes.string,
|
link: PropTypes.string,
|
||||||
@ -76,15 +78,7 @@ export default class Container extends Component {
|
|||||||
>
|
>
|
||||||
{
|
{
|
||||||
link
|
link
|
||||||
? (
|
? this.renderLink(link, card)
|
||||||
<Link
|
|
||||||
className={ styles.link }
|
|
||||||
to={ link }
|
|
||||||
>
|
|
||||||
{ card }
|
|
||||||
{ this.renderHover() }
|
|
||||||
</Link>
|
|
||||||
)
|
|
||||||
: (
|
: (
|
||||||
<div>
|
<div>
|
||||||
{ card }
|
{ card }
|
||||||
@ -96,6 +90,32 @@ export default class Container extends Component {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
renderLink (link, card) {
|
||||||
|
const { dappLink } = this.props;
|
||||||
|
|
||||||
|
if (dappLink) {
|
||||||
|
return (
|
||||||
|
<DappLink
|
||||||
|
className={ styles.link }
|
||||||
|
to={ link }
|
||||||
|
>
|
||||||
|
{ card }
|
||||||
|
{ this.renderHover() }
|
||||||
|
</DappLink>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Link
|
||||||
|
className={ styles.link }
|
||||||
|
to={ link }
|
||||||
|
>
|
||||||
|
{ card }
|
||||||
|
{ this.renderHover() }
|
||||||
|
</Link>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
renderHover () {
|
renderHover () {
|
||||||
const { hover } = this.props;
|
const { hover } = this.props;
|
||||||
|
|
||||||
|
21
js/src/ui/DappLink/dappLink.css
Normal file
21
js/src/ui/DappLink/dappLink.css
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
/* Copyright 2015-2017 Parity Technologies (UK) Ltd.
|
||||||
|
/* This file is part of Parity.
|
||||||
|
/*
|
||||||
|
/* Parity is free software: you can redistribute it and/or modify
|
||||||
|
/* it under the terms of the GNU General Public License as published by
|
||||||
|
/* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
/* (at your option) any later version.
|
||||||
|
/*
|
||||||
|
/* Parity is distributed in the hope that it will be useful,
|
||||||
|
/* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
/* GNU General Public License for more details.
|
||||||
|
/*
|
||||||
|
/* You should have received a copy of the GNU General Public License
|
||||||
|
/* along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
.link {
|
||||||
|
color: rgb(0, 151, 167);
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
48
js/src/ui/DappLink/dappLink.js
Normal file
48
js/src/ui/DappLink/dappLink.js
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
// Copyright 2015-2017 Parity Technologies (UK) Ltd.
|
||||||
|
// This file is part of Parity.
|
||||||
|
|
||||||
|
// Parity is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
|
||||||
|
// Parity is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import React, { Component, PropTypes } from 'react';
|
||||||
|
|
||||||
|
import { nodeOrStringProptype } from '~/util/proptypes';
|
||||||
|
|
||||||
|
import styles from './dappLink.css';
|
||||||
|
|
||||||
|
export default class DappLink extends Component {
|
||||||
|
static propTypes = {
|
||||||
|
children: nodeOrStringProptype().isRequired,
|
||||||
|
className: PropTypes.string,
|
||||||
|
to: PropTypes.string.isRequired
|
||||||
|
};
|
||||||
|
|
||||||
|
render () {
|
||||||
|
const { children, className } = this.props;
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
className={ [styles.link, className].join(' ') }
|
||||||
|
onClick={ this.onClick }
|
||||||
|
>
|
||||||
|
{ children }
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
onClick = () => {
|
||||||
|
const { to } = this.props;
|
||||||
|
|
||||||
|
window.parent.location.hash = `/app${to}`;
|
||||||
|
}
|
||||||
|
}
|
17
js/src/ui/DappLink/index.js
Normal file
17
js/src/ui/DappLink/index.js
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
// Copyright 2015-2017 Parity Technologies (UK) Ltd.
|
||||||
|
// This file is part of Parity.
|
||||||
|
|
||||||
|
// Parity is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
|
||||||
|
// Parity is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
export default from './dappLink';
|
@ -28,6 +28,7 @@ export CopyToClipboard from './CopyToClipboard';
|
|||||||
export CurrencySymbol from './CurrencySymbol';
|
export CurrencySymbol from './CurrencySymbol';
|
||||||
export DappCard from './DappCard';
|
export DappCard from './DappCard';
|
||||||
export DappIcon from './DappIcon';
|
export DappIcon from './DappIcon';
|
||||||
|
export DappLink from './DappLink';
|
||||||
export Errors from './Errors';
|
export Errors from './Errors';
|
||||||
export Features, { FEATURES, FeaturesStore } from './Features';
|
export Features, { FEATURES, FeaturesStore } from './Features';
|
||||||
export Form, { AddressSelect, DappUrlInput, FileSelect, FormWrap, Input, InputAddress, InputAddressSelect, InputChip, InputDate, InputInline, InputTime, Label, RadioButtons, Select, TypedInput, VaultSelect } from './Form';
|
export Form, { AddressSelect, DappUrlInput, FileSelect, FormWrap, Input, InputAddress, InputAddressSelect, InputChip, InputDate, InputInline, InputTime, Label, RadioButtons, Select, TypedInput, VaultSelect } from './Form';
|
||||||
|
@ -56,6 +56,8 @@ class Account extends Component {
|
|||||||
hwstore = HardwareStore.get(this.context.api);
|
hwstore = HardwareStore.get(this.context.api);
|
||||||
|
|
||||||
componentDidMount () {
|
componentDidMount () {
|
||||||
|
console.log('Account', 'componentDidMount');
|
||||||
|
|
||||||
this.props.fetchCertifiers();
|
this.props.fetchCertifiers();
|
||||||
this.setVisibleAccounts();
|
this.setVisibleAccounts();
|
||||||
}
|
}
|
||||||
|
@ -14,4 +14,34 @@
|
|||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
export default from './account';
|
import ReactDOM from 'react-dom';
|
||||||
|
import React from 'react';
|
||||||
|
import { Route, Router, hashHistory } from 'react-router';
|
||||||
|
|
||||||
|
import injectTapEventPlugin from 'react-tap-event-plugin';
|
||||||
|
injectTapEventPlugin();
|
||||||
|
|
||||||
|
import { api } from './parity';
|
||||||
|
|
||||||
|
import ContractInstances from '~/contracts';
|
||||||
|
import { initStore } from '~/redux';
|
||||||
|
import ContextProvider from '~/ui/ContextProvider';
|
||||||
|
import muiTheme from '~/ui/Theme';
|
||||||
|
|
||||||
|
import Account from './account';
|
||||||
|
|
||||||
|
import '~/../assets/fonts/Roboto/font.css';
|
||||||
|
import '~/../assets/fonts/RobotoMono/font.css';
|
||||||
|
|
||||||
|
ContractInstances.get(api);
|
||||||
|
|
||||||
|
const store = initStore(api, hashHistory);
|
||||||
|
|
||||||
|
ReactDOM.render(
|
||||||
|
<ContextProvider api={ api } muiTheme={ muiTheme } store={ store }>
|
||||||
|
<Router history={ hashHistory }>
|
||||||
|
<Route path='/' component={ Account } />
|
||||||
|
</Router>
|
||||||
|
</ContextProvider>,
|
||||||
|
document.querySelector('#container')
|
||||||
|
);
|
||||||
|
19
js/src/views/Account/package.json
Normal file
19
js/src/views/Account/package.json
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"name": "@parity/view-address",
|
||||||
|
"description": "Parity default account view",
|
||||||
|
"version": "0.0.0",
|
||||||
|
"main": "index.js",
|
||||||
|
"author": "Parity Team <admin@parity.io>",
|
||||||
|
"maintainers": [],
|
||||||
|
"contributors": [],
|
||||||
|
"license": "GPL-3.0",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/paritytech/parity.git"
|
||||||
|
},
|
||||||
|
"keywords": [],
|
||||||
|
"scripts": {},
|
||||||
|
"devDependencies": {},
|
||||||
|
"dependencies": {},
|
||||||
|
"peerDependencies": {}
|
||||||
|
}
|
21
js/src/views/Account/parity.js
Normal file
21
js/src/views/Account/parity.js
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
// Copyright 2015-2017 Parity Technologies (UK) Ltd.
|
||||||
|
// This file is part of Parity.
|
||||||
|
|
||||||
|
// Parity is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
|
||||||
|
// Parity is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
const api = window.parent.secureApi;
|
||||||
|
|
||||||
|
export {
|
||||||
|
api
|
||||||
|
};
|
@ -96,6 +96,7 @@ class Summary extends Component {
|
|||||||
return (
|
return (
|
||||||
<Container
|
<Container
|
||||||
className={ styles.account }
|
className={ styles.account }
|
||||||
|
dappLink
|
||||||
hover={
|
hover={
|
||||||
<div className={ styles.overlay }>
|
<div className={ styles.overlay }>
|
||||||
{ this.renderBalance(false) }
|
{ this.renderBalance(false) }
|
||||||
@ -228,7 +229,7 @@ class Summary extends Component {
|
|||||||
const { address } = account;
|
const { address } = account;
|
||||||
const baseLink = account.wallet
|
const baseLink = account.wallet
|
||||||
? 'wallet'
|
? 'wallet'
|
||||||
: link || 'accounts';
|
: link || 'account';
|
||||||
|
|
||||||
return `/${baseLink}/${address}`;
|
return `/${baseLink}/${address}`;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@parity/view-addresses",
|
"name": "@parity/view-addresses",
|
||||||
"description": "Parity default addressbook view",
|
"description": "Parity default accounts list view",
|
||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"author": "Parity Team <admin@parity.io>",
|
"author": "Parity Team <admin@parity.io>",
|
||||||
|
@ -123,7 +123,7 @@ export default class Dapp extends Component {
|
|||||||
className={ styles.frame }
|
className={ styles.frame }
|
||||||
frameBorder={ 0 }
|
frameBorder={ 0 }
|
||||||
name={ name }
|
name={ name }
|
||||||
sandbox='allow-forms allow-popups allow-same-origin allow-scripts'
|
sandbox='allow-forms allow-popups allow-same-origin allow-scripts allow-top-navigation'
|
||||||
scrolling='auto'
|
scrolling='auto'
|
||||||
src={ src }
|
src={ src }
|
||||||
/>
|
/>
|
||||||
|
@ -78,7 +78,7 @@ export default class DappsStore extends EventEmitter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@computed get visibleBuiltin () {
|
@computed get visibleBuiltin () {
|
||||||
return this.visibleApps.filter((app) => app.type === 'builtin');
|
return this.visibleApps.filter((app) => !app.noselect && app.type === 'builtin');
|
||||||
}
|
}
|
||||||
|
|
||||||
@computed get visibleLocal () {
|
@computed get visibleLocal () {
|
||||||
@ -90,7 +90,7 @@ export default class DappsStore extends EventEmitter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@computed get visibleViews () {
|
@computed get visibleViews () {
|
||||||
return this.visibleApps.filter((app) => app.type === 'view');
|
return this.visibleApps.filter((app) => !app.noselect && app.type === 'view');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -14,7 +14,6 @@
|
|||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
export Account from './Account';
|
|
||||||
export Address from './Address';
|
export Address from './Address';
|
||||||
export Application from './Application';
|
export Application from './Application';
|
||||||
export Contract from './Contract';
|
export Contract from './Contract';
|
||||||
|
Loading…
Reference in New Issue
Block a user