Skip to content
This repository has been archived by the owner on Nov 6, 2020. It is now read-only.

[beta] UI updates for 1.5.1 #4429

Merged
merged 25 commits into from
Feb 4, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
e38a0f9
s/Delete Contract/Forget Contract/ (#4237)
jacogr Jan 20, 2017
671c3a0
Adjust the location of the signer snippet (#4155)
ngotchac Jan 21, 2017
82b1374
Additional building-block UI components (#4239)
jacogr Jan 20, 2017
b7aff7a
ui/SectionList component (#4292)
jacogr Jan 25, 2017
e9653c9
Add a Playground for the UI Components (#4301)
ngotchac Jan 26, 2017
a542d79
Split Dapp icon into ui/DappIcon (#4308)
jacogr Jan 26, 2017
d72072a
Add QrCode & Copy to ShapeShift (#4322)
jacogr Jan 27, 2017
49b4677
Display QrCode for accounts, addresses & contracts (#4329)
jacogr Jan 27, 2017
8fd5132
Allow Portal to be used as top-level modal (#4338)
jacogr Jan 30, 2017
94635d2
Add proper event listener to Portal (#4359)
ngotchac Jan 31, 2017
98a93f7
Display AccountCard name via IdentityName (#4235)
jacogr Jan 31, 2017
7579e91
Fix signing (#4363)
gavofyork Jan 31, 2017
4a18e34
Dapp Account Selection & Defaults (#4355)
jacogr Jan 31, 2017
2a5967f
Add parity_defaultAccount RPC (with subscription) (#4383)
jacogr Feb 1, 2017
554c240
Default Account selector in Signer overlay (#4375)
jacogr Feb 1, 2017
d3e483d
Typo, fixes #4271 (#4391)
jacogr Feb 1, 2017
7eecca0
Fix ParityBar account selection overflows (#4405)
jacogr Feb 2, 2017
f98c15e
Available Dapp selection alignment with Permissions (Portal) (#4374)
jacogr Feb 2, 2017
7ada5fc
registry dapp: make lookup use lower case (#4409)
derhuerst Feb 2, 2017
529fe0f
Dapps use defaultAccount instead of own selectors (#4386)
jacogr Feb 3, 2017
69a07f3
Poll for defaultAccount to update dapp & overlay subscriptions (#4417)
jacogr Feb 3, 2017
532567d
Add block & timestamp conditions to Signer (#4411)
jacogr Feb 3, 2017
fa9204d
Extension installation overlay (#4423)
jacogr Feb 3, 2017
cddb534
Fix for non-included jsonrpc
jacogr Feb 3, 2017
b587b58
Extend Portal component (as per Modal) #4392
jacogr Feb 3, 2017
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions js/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -163,13 +163,16 @@
"phoneformat.js": "1.0.3",
"promise-worker": "1.1.1",
"push.js": "0.0.11",
"qrcode-npm": "0.0.3",
"qs": "6.3.0",
"react": "15.4.1",
"react-ace": "4.1.0",
"react-addons-css-transition-group": "15.4.1",
"react-copy-to-clipboard": "4.2.3",
"react-dom": "15.4.1",
"react-dropzone": "3.7.3",
"react-element-to-jsx-string": "6.0.0",
"react-event-listener": "0.4.1",
"react-intl": "2.1.5",
"react-portal": "3.0.0",
"react-redux": "4.4.6",
Expand All @@ -185,6 +188,7 @@
"scryptsy": "2.0.0",
"solc": "ngotchac/solc-js",
"store": "1.3.20",
"useragent.js": "0.5.6",
"utf8": "2.1.2",
"valid-url": "1.0.9",
"validator": "6.2.0",
Expand Down
16 changes: 16 additions & 0 deletions js/src/api/format/input.js
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,18 @@ export function inNumber16 (number) {
return inHex(bn.toString(16));
}

export function inOptionsCondition (condition) {
if (condition) {
if (condition.block) {
condition.block = condition.block ? inNumber10(condition.block) : null;
} else if (condition.time) {
condition.time = inNumber10(Math.floor(condition.time.getTime() / 1000));
}
}

return condition;
}

export function inOptions (options) {
if (options) {
Object.keys(options).forEach((key) => {
Expand All @@ -136,6 +148,10 @@ export function inOptions (options) {
options[key] = inAddress(options[key]);
break;

case 'condition':
options[key] = inOptionsCondition(options[key]);
break;

case 'gas':
case 'gasPrice':
options[key] = inNumber16((new BigNumber(options[key])).round());
Expand Down
20 changes: 19 additions & 1 deletion js/src/api/format/output.js
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,18 @@ export function outSyncing (syncing) {
return syncing;
}

export function outTransactionCondition (condition) {
if (condition) {
if (condition.block) {
condition.block = outNumber(condition.block);
} else if (condition.time) {
condition.time = outDate(condition.time);
}
}

return condition;
}

export function outTransaction (tx) {
if (tx) {
Object.keys(tx).forEach((key) => {
Expand All @@ -213,8 +225,14 @@ export function outTransaction (tx) {
tx[key] = outNumber(tx[key]);
break;

case 'condition':
tx[key] = outTransactionCondition(tx[key]);
break;

case 'minBlock':
tx[key] = tx[key] ? outNumber(tx[key]) : null;
tx[key] = tx[key]
? outNumber(tx[key])
: null;
break;

case 'creates':
Expand Down
62 changes: 60 additions & 2 deletions js/src/api/rpc/parity/parity.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2015, 2016 Parity Technologies (UK) Ltd.
// Copyright 2015-2017 Parity Technologies (UK) Ltd.
// This file is part of Parity.

// Parity is free software: you can redistribute it and/or modify
Expand All @@ -14,7 +14,7 @@
// You should have received a copy of the GNU General Public License
// along with Parity. If not, see <http://www.gnu.org/licenses/>.

import { inAddress, inAddresses, inData, inHex, inNumber16, inOptions } from '../../format/input';
import { inAddress, inAddresses, inData, inHex, inNumber16, inOptions, inBlockNumber } from '../../format/input';
import { outAccountInfo, outAddress, outAddresses, outChainStatus, outHistogram, outNumber, outPeers, outTransaction } from '../../format/output';

export default class Parity {
Expand Down Expand Up @@ -76,6 +76,17 @@ export default class Parity {
.execute('parity_dappsInterface');
}

decryptMessage (address, data) {
return this._transport
.execute('parity_decryptMessage', inAddress(address), inHex(data));
}

defaultAccount () {
return this._transport
.execute('parity_defaultAccount')
.then(outAddress);
}

defaultExtraData () {
return this._transport
.execute('parity_defaultExtraData');
Expand All @@ -101,6 +112,11 @@ export default class Parity {
.execute('parity_enode');
}

encryptMessage (pubkey, data) {
return this._transport
.execute('parity_encryptMessage', inHex(pubkey), inHex(data));
}

executeUpgrade () {
return this._transport
.execute('parity_executeUpgrade');
Expand All @@ -111,6 +127,17 @@ export default class Parity {
.execute('parity_extraData');
}

futureTransactions () {
return this._transport
.execute('parity_futureTransactions');
}

gasCeilTarget () {
return this._transport
.execute('parity_gasCeilTarget')
.then(outNumber);
}

gasFloorTarget () {
return this._transport
.execute('parity_gasFloorTarget')
Expand Down Expand Up @@ -156,11 +183,22 @@ export default class Parity {
.execute('parity_killAccount', inAddress(account), password);
}

listAccounts (count, offset = null, blockNumber = 'latest') {
return this._transport
.execute('parity_listAccounts', count, inAddress(offset), inBlockNumber(blockNumber))
.then((accounts) => (accounts || []).map(outAddress));
}

listRecentDapps () {
return this._transport
.execute('parity_listRecentDapps');
}

listStorageKeys (address, count, hash = null, blockNumber = 'latest') {
return this._transport
.execute('parity_listStorageKeys', inAddress(address), count, inHex(hash), inBlockNumber(blockNumber));
}

removeAddress (address) {
return this._transport
.execute('parity_removeAddress', inAddress(address));
Expand Down Expand Up @@ -265,6 +303,11 @@ export default class Parity {
.then(outAddress);
}

postSign (address, hash) {
return this._transport
.execute('parity_postSign', inAddress(address), inHex(hash));
}

postTransaction (options) {
return this._transport
.execute('parity_postTransaction', inOptions(options));
Expand Down Expand Up @@ -311,16 +354,31 @@ export default class Parity {
.execute('parity_setDappsAddresses', dappId, inAddresses(addresses));
}

setEngineSigner (address, password) {
return this._transport
.execute('parity_setEngineSigner', inAddress(address), password);
}

setExtraData (data) {
return this._transport
.execute('parity_setExtraData', inData(data));
}

setGasCeilTarget (quantity) {
return this._transport
.execute('parity_setGasCeilTarget', inNumber16(quantity));
}

setGasFloorTarget (quantity) {
return this._transport
.execute('parity_setGasFloorTarget', inNumber16(quantity));
}

setMaxTransactionGas (quantity) {
return this._transport
.execute('parity_setMaxTransactionGas', inNumber16(quantity));
}

setMinGasPrice (quantity) {
return this._transport
.execute('parity_setMinGasPrice', inNumber16(quantity));
Expand Down
5 changes: 3 additions & 2 deletions js/src/api/subscriptions/eth.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ export default class Eth {
this._started = false;

this._lastBlock = new BigNumber(-1);
this._pollTimerId = null;
}

get isStarted () {
Expand All @@ -37,7 +38,7 @@ export default class Eth {

_blockNumber = () => {
const nextTimeout = (timeout = 1000) => {
setTimeout(() => {
this._pollTimerId = setTimeout(() => {
this._blockNumber();
}, timeout);
};
Expand All @@ -57,6 +58,6 @@ export default class Eth {

nextTimeout();
})
.catch(nextTimeout);
.catch(() => nextTimeout());
}
}
1 change: 1 addition & 0 deletions js/src/api/subscriptions/manager.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ const events = {
'logging': { module: 'logging' },
'eth_blockNumber': { module: 'eth' },
'parity_allAccountsInfo': { module: 'personal' },
'parity_defaultAccount': { module: 'personal' },
'eth_accounts': { module: 'personal' },
'signer_requestsToConfirm': { module: 'signer' }
};
Expand Down
56 changes: 53 additions & 3 deletions js/src/api/subscriptions/personal.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2015, 2016 Parity Technologies (UK) Ltd.
// Copyright 2015-2017 Parity Technologies (UK) Ltd.
// This file is part of Parity.

// Parity is free software: you can redistribute it and/or modify
Expand All @@ -20,6 +20,9 @@ export default class Personal {
this._api = api;
this._updateSubscriptions = updateSubscriptions;
this._started = false;

this._lastDefaultAccount = '0x0';
this._pollTimerId = null;
}

get isStarted () {
Expand All @@ -30,12 +33,44 @@ export default class Personal {
this._started = true;

return Promise.all([
this._defaultAccount(),
this._listAccounts(),
this._accountsInfo(),
this._loggingSubscribe()
]);
}

// FIXME: Because of the different API instances, the "wait for valid changes" approach
// doesn't work. Since the defaultAccount is critical to operation, we poll in exactly
// same way we do in ../eth (ala same as eth_blockNumber) and update. This should be moved
// to pub-sub as it becomes available
_defaultAccount = (timerDisabled = false) => {
const nextTimeout = (timeout = 1000) => {
if (!timerDisabled) {
this._pollTimerId = setTimeout(() => {
this._defaultAccount();
}, timeout);
}
};

if (!this._api.transport.isConnected) {
nextTimeout(500);
return;
}

return this._api.parity
.defaultAccount()
.then((defaultAccount) => {
if (this._lastDefaultAccount !== defaultAccount) {
this._lastDefaultAccount = defaultAccount;
this._updateSubscriptions('parity_defaultAccount', null, defaultAccount);
}

nextTimeout();
})
.catch(() => nextTimeout());
}

_listAccounts = () => {
return this._api.eth
.accounts()
Expand All @@ -46,9 +81,19 @@ export default class Personal {

_accountsInfo = () => {
return this._api.parity
.allAccountsInfo()
.accountsInfo()
.then((info) => {
this._updateSubscriptions('parity_allAccountsInfo', null, info);
this._updateSubscriptions('parity_accountsInfo', null, info);

return this._api.parity
.allAccountsInfo()
.catch(() => {
// NOTE: This fails on non-secure APIs, swallow error
return {};
})
.then((allInfo) => {
this._updateSubscriptions('parity_allAccountsInfo', null, allInfo);
});
});
}

Expand All @@ -73,6 +118,11 @@ export default class Personal {
case 'parity_setAccountMeta':
this._accountsInfo();
return;

case 'parity_setDappsAddresses':
case 'parity_setNewDappsWhitelist':
this._defaultAccount(true);
return;
}
});
}
Expand Down
Loading