Merge branch 'master' into ui-2
# Conflicts: # js/src/views/ContractDevelop/store.js
This commit is contained in:
commit
9b025cf8c1
@ -522,10 +522,10 @@ docker-build:
|
||||
script:
|
||||
- if [ "$CI_BUILD_REF_NAME" == "beta-release" ]; then DOCKER_TAG="latest"; else DOCKER_TAG=$CI_BUILD_REF_NAME; fi
|
||||
- docker login -u $Docker_Hub_User -p $Docker_Hub_Pass
|
||||
- sh scripts/docker-build.sh $DOCKER_TAG
|
||||
- sh scripts/docker-build.sh $DOCKER_TAG ethcore
|
||||
- docker logout
|
||||
- docker login -u $Docker_Hub_User_Parity -p $Docker_Hub_Pass_Parity
|
||||
- sh scripts/docker-build.sh $DOCKER_TAG
|
||||
- sh scripts/docker-build.sh $DOCKER_TAG parity
|
||||
- docker logout
|
||||
tags:
|
||||
- docker
|
||||
|
2
Cargo.lock
generated
2
Cargo.lock
generated
@ -1778,7 +1778,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "parity-ui-precompiled"
|
||||
version = "1.4.0"
|
||||
source = "git+https://github.com/paritytech/js-precompiled.git#15530d00f0a48462e764a909e15a0c74870b1fad"
|
||||
source = "git+https://github.com/paritytech/js-precompiled.git#4ad25201e9bc25a3873fd1e7a6d8a7b49861c946"
|
||||
dependencies = [
|
||||
"parity-dapps-glue 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "parity.js",
|
||||
"version": "1.7.65",
|
||||
"version": "1.7.66",
|
||||
"main": "release/index.js",
|
||||
"jsnext:main": "src/index.js",
|
||||
"author": "Parity Team <admin@parity.io>",
|
||||
|
@ -70,11 +70,21 @@ export default class Parity {
|
||||
.execute('parity_checkRequest', inNumber16(requestId));
|
||||
}
|
||||
|
||||
cidV0 (data) {
|
||||
return this._transport
|
||||
.execute('parity_cidV0', inData(data));
|
||||
}
|
||||
|
||||
closeVault (vaultName) {
|
||||
return this._transport
|
||||
.execute('parity_closeVault', vaultName);
|
||||
}
|
||||
|
||||
composeTransaction (options) {
|
||||
return this._transport
|
||||
.execute('parity_composeTransaction', inOptions(options));
|
||||
}
|
||||
|
||||
consensusCapability () {
|
||||
return this._transport
|
||||
.execute('parity_consensusCapability');
|
||||
|
@ -296,19 +296,6 @@ export default {
|
||||
}
|
||||
},
|
||||
|
||||
getBlockHeaderByNumber: {
|
||||
section: SECTION_NET,
|
||||
desc: 'Returns block header information by number (same as eth_getBlockByNumber without transactions and uncles)',
|
||||
params: [
|
||||
{
|
||||
type: BlockNumber,
|
||||
desc: 'integer of a block number, or the string `\'earliest\'`, `\'latest\'` or `\'pending\'`, as in the [default block parameter](#the-default-block-parameter).',
|
||||
example: fromDecimal(436)
|
||||
}
|
||||
],
|
||||
returns: 'See [eth_getBlockByHash](#eth_getblockbyhash) (without transactions and uncles)'
|
||||
},
|
||||
|
||||
getVaultMeta: {
|
||||
section: SECTION_VAULT,
|
||||
desc: 'Returns the metadata for a specific vault',
|
||||
@ -1927,5 +1914,87 @@ export default {
|
||||
desc: 'Message signature.',
|
||||
example: '0x1d9e33a8cf8bfc089a172bca01da462f9e359c6cb1b0f29398bc884e4d18df4f78588aee4fb5cc067ca62d2abab995e0bba29527be6ac98105b0320020a2efaf00'
|
||||
}
|
||||
},
|
||||
|
||||
composeTransaction: {
|
||||
desc: 'Given partial transaction request produces transaction with all fields filled in. Such transaction can be then signed externally.',
|
||||
params: [
|
||||
{
|
||||
type: TransactionRequest,
|
||||
desc: 'see [`eth_sendTransaction`](JSONRPC-eth-module#eth_sendtransaction).',
|
||||
format: 'inputCallFormatter',
|
||||
example: {
|
||||
from: '0xb60e8dd61c5d32be8058bb8eb970870f07233155',
|
||||
to: '0xd46e8dd67c5d32be8058bb8eb970870f07244567',
|
||||
value: fromDecimal(2441406250)
|
||||
}
|
||||
}
|
||||
],
|
||||
returns: {
|
||||
type: Object,
|
||||
desc: 'Transaction object (same as the parameter) with missing optional fields filled in by defaults.',
|
||||
example: {
|
||||
condition: null,
|
||||
data: '0x',
|
||||
from: '0xb60e8dd61c5d32be8058bb8eb970870f07233155',
|
||||
gas: '0xe57e0',
|
||||
gasPrice: '0x4a817c800',
|
||||
nonce: '0x0',
|
||||
to: '0xd46e8dd67c5d32be8058bb8eb970870f07244567',
|
||||
value: '0x9184e72a'
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
getBlockHeaderByNumber: {
|
||||
desc: 'Get block header. Same as [`eth_getBlockByNumber`](JSONRPC-eth-module#eth_getblockbynumber) but without uncles and transactions.',
|
||||
params: [
|
||||
{
|
||||
type: BlockNumber,
|
||||
desc: 'integer of a block number, or the string `\'earliest\'`, `\'latest\'` or `\'pending\'`, as in the [default block parameter](#the-default-block-parameter).',
|
||||
example: fromDecimal(436)
|
||||
}
|
||||
],
|
||||
returns: {
|
||||
type: Object,
|
||||
desc: 'Block header',
|
||||
example: {
|
||||
author: '0xbb7b8287f3f0a933474a79eae42cbca977791171',
|
||||
difficulty: '0x4ea3f27bc',
|
||||
extraData: '0x476574682f4c5649562f76312e302e302f6c696e75782f676f312e342e32',
|
||||
gasLimit: '0x1388',
|
||||
gasUsed: '0x0',
|
||||
hash: '0xdc0818cf78f21a8e70579cb46a43643f78291264dda342ae31049421c82d21ae',
|
||||
logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
|
||||
miner: '0xbb7b8287f3f0a933474a79eae42cbca977791171',
|
||||
mixHash: '0x4fffe9ae21f1c9e15207b1f472d5bbdd68c9595d461666602f2be20daf5e7843',
|
||||
nonce: '0x689056015818adbe',
|
||||
number: '0x1b4',
|
||||
parentHash: '0xe99e022112df268087ea7eafaf4790497fd21dbeeb6bd7a1721df161a6657a54',
|
||||
receiptsRoot: '0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421',
|
||||
sealFields: ['0xa04fffe9ae21f1c9e15207b1f472d5bbdd68c9595d461666602f2be20daf5e7843', '0x88689056015818adbe'],
|
||||
sha3Uncles: '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347',
|
||||
size: '0x21b',
|
||||
stateRoot: '0xddc8b0234c2e0cad087c8b389aa7ef01f7d79b2570bccb77ce48648aa61c904d',
|
||||
timestamp: '0x55ba467c',
|
||||
transactionsRoot: '0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421'
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
cidV0: {
|
||||
desc: 'Compute a v0 IPFS Content ID from protobuf encoded bytes.',
|
||||
params: [
|
||||
{
|
||||
type: Data,
|
||||
desc: 'to encode.',
|
||||
example: '0x666f6f626172'
|
||||
}
|
||||
],
|
||||
returns: {
|
||||
type: String,
|
||||
desc: 'Base58 encoded CID',
|
||||
example: 'QmSbFjqjd6nFwNHqsBCC7SK8GShGcayLUEtysJjNGhZAnC'
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -128,7 +128,8 @@ export default class CertificationsMiddleware {
|
||||
return badgeReg.getContract()
|
||||
.then((badgeRegContract) => {
|
||||
logs = badgeRegContract.parseEventLogs(logs);
|
||||
const ids = logs.map((log) => log.params.id.value.toNumber());
|
||||
|
||||
const ids = logs.map((log) => log.params && log.params.id.value.toNumber());
|
||||
|
||||
return fetchCertifiers(uniq(ids));
|
||||
});
|
||||
|
@ -16,13 +16,11 @@
|
||||
|
||||
import toolbox from 'sw-toolbox';
|
||||
|
||||
toolbox.precache(self.serviceWorkerOption.assets);
|
||||
|
||||
/**
|
||||
* Cache the SOLC files : if not available, make a network request
|
||||
*/
|
||||
toolbox.router.any(/raw.githubusercontent.com\/ethereum\/solc-bin(.+)list\.json$/, toolbox.cacheFirst);
|
||||
toolbox.router.any(/raw.githubusercontent.com\/ethereum\/solc-bin(.+)soljson(.+)\.js$/, toolbox.cacheFirst);
|
||||
toolbox.router.any(/rawgit.com\/ethereum\/solc-bin(.+)list\.json$/, toolbox.networkFirst);
|
||||
toolbox.router.any(/rawgit.com\/ethereum\/solc-bin(.+)soljson(.+)\.js$/, toolbox.cacheFirst);
|
||||
|
||||
self.addEventListener('install', (event) => {
|
||||
event.waitUntil(self.skipWaiting());
|
||||
|
@ -83,7 +83,10 @@ class ParityBar extends Component {
|
||||
dappsStore
|
||||
.on('loaded', (app) => {
|
||||
this.app = app;
|
||||
this.loadPosition();
|
||||
|
||||
if (this.props.dapp) {
|
||||
this.loadPosition();
|
||||
}
|
||||
});
|
||||
|
||||
if (this.props.dapp) {
|
||||
|
@ -52,21 +52,9 @@ export default class SolidityUtils {
|
||||
|
||||
static getCompiler (build) {
|
||||
const { longVersion, path } = build;
|
||||
const URL = `https://raw.githubusercontent.com/ethereum/solc-bin/gh-pages/bin/${path}`;
|
||||
const URL = `https://cdn.rawgit.com/ethereum/solc-bin/gh-pages/bin/${path}`;
|
||||
const isWorker = typeof window !== 'object';
|
||||
|
||||
if (isWorker) {
|
||||
return new Promise((resolve, reject) => {
|
||||
self.importScripts(URL);
|
||||
|
||||
setTimeout(() => {
|
||||
const compiler = solc(self.Module);
|
||||
|
||||
return resolve(compiler);
|
||||
}, 50);
|
||||
});
|
||||
}
|
||||
|
||||
return fetch(URL)
|
||||
.then((r) => r.text())
|
||||
.then((code) => {
|
||||
|
@ -102,8 +102,14 @@ class Contract extends Component {
|
||||
const { api } = this.context;
|
||||
const { subscriptionId, blockSubscriptionId, contract } = this.state;
|
||||
|
||||
api.unsubscribe(blockSubscriptionId);
|
||||
contract.unsubscribe(subscriptionId);
|
||||
if (blockSubscriptionId >= 0) {
|
||||
api.unsubscribe(blockSubscriptionId);
|
||||
}
|
||||
|
||||
if (subscriptionId >= 0) {
|
||||
contract.unsubscribe(subscriptionId);
|
||||
}
|
||||
|
||||
this.props.setVisibleAccounts([]);
|
||||
}
|
||||
|
||||
|
@ -273,24 +273,6 @@ class ContractDevelop extends Component {
|
||||
renderParameters () {
|
||||
const { compiling, contract, selectedBuild, loading, workerError } = this.store;
|
||||
|
||||
if (workerError) {
|
||||
return (
|
||||
<div className={ styles.panel }>
|
||||
<div className={ styles.centeredMessage }>
|
||||
<p>
|
||||
<FormattedMessage
|
||||
id='writeContract.error.params'
|
||||
defaultMessage='An error occurred with the following description'
|
||||
/>
|
||||
</p>
|
||||
<div className={ styles.error }>
|
||||
{ workerError.toString() }
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
if (selectedBuild < 0) {
|
||||
return (
|
||||
<div className={ `${styles.panel} ${styles.centeredMessage}` }>
|
||||
@ -308,10 +290,28 @@ class ContractDevelop extends Component {
|
||||
);
|
||||
}
|
||||
|
||||
if (loading) {
|
||||
let content;
|
||||
|
||||
if (workerError) {
|
||||
content = (
|
||||
<div className={ styles.panel }>
|
||||
<div className={ styles.centeredMessage }>
|
||||
<p>
|
||||
<FormattedMessage
|
||||
id='writeContract.error.params'
|
||||
defaultMessage='An error occurred with the following description'
|
||||
/>
|
||||
</p>
|
||||
<div className={ styles.error }>
|
||||
{ workerError.toString() }
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
} else if (loading) {
|
||||
const { longVersion } = this.store.builds[selectedBuild];
|
||||
|
||||
return (
|
||||
content = (
|
||||
<div className={ styles.panel }>
|
||||
<div className={ styles.centeredMessage }>
|
||||
<Loading
|
||||
@ -330,6 +330,8 @@ class ContractDevelop extends Component {
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
} else {
|
||||
content = this.renderCompilation();
|
||||
}
|
||||
|
||||
return (
|
||||
@ -394,7 +396,7 @@ class ContractDevelop extends Component {
|
||||
</div>
|
||||
</div>
|
||||
{ this.renderSolidityVersions() }
|
||||
{ this.renderCompilation() }
|
||||
{ content }
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
@ -24,7 +24,7 @@ import { sha3 } from '@parity/api/util/sha3';
|
||||
|
||||
import SolidityUtils from '~/util/solidity';
|
||||
|
||||
const SOLIDITY_LIST_URL = 'https://raw.githubusercontent.com/ethereum/solc-bin/gh-pages/bin/list.json';
|
||||
const SOLIDITY_LIST_URL = 'https://rawgit.com/ethereum/solc-bin/gh-pages/bin/list.json';
|
||||
const WRITE_CONTRACT_STORE_KEY = '_parity::contractDevelop';
|
||||
|
||||
const SNIPPETS = {
|
||||
@ -198,6 +198,7 @@ export default class ContractDevelopStore {
|
||||
})
|
||||
.catch((error) => {
|
||||
this.setWorkerError(error);
|
||||
throw error;
|
||||
});
|
||||
}
|
||||
|
||||
@ -319,6 +320,7 @@ export default class ContractDevelopStore {
|
||||
transaction(() => {
|
||||
this.compiled = false;
|
||||
this.compiling = true;
|
||||
this.setWorkerError(null);
|
||||
});
|
||||
|
||||
const build = this.builds[this.selectedBuild];
|
||||
@ -366,12 +368,16 @@ export default class ContractDevelopStore {
|
||||
annotations, contracts, errors
|
||||
} = data.result;
|
||||
|
||||
this.contract = contract;
|
||||
this.contractIndex = contractIndex;
|
||||
if (!contract && errors && errors.length > 0) {
|
||||
this.setWorkerError(errors[0]);
|
||||
} else {
|
||||
this.contract = contract;
|
||||
this.contractIndex = contractIndex;
|
||||
|
||||
this.annotations = annotations;
|
||||
this.contracts = contracts;
|
||||
this.errors = errors;
|
||||
this.annotations = annotations;
|
||||
this.contracts = contracts;
|
||||
this.errors = errors;
|
||||
}
|
||||
}
|
||||
|
||||
this.compiled = true;
|
||||
|
@ -22,7 +22,10 @@ registerPromiseWorker((msg) => {
|
||||
return handleMessage(msg);
|
||||
});
|
||||
|
||||
self.solc = {};
|
||||
self.compiler = {
|
||||
version: null,
|
||||
compiler: null
|
||||
};
|
||||
self.files = {};
|
||||
|
||||
function handleMessage (message) {
|
||||
@ -57,7 +60,16 @@ function compile (data) {
|
||||
|
||||
return getCompiler(build)
|
||||
.then((compiler) => {
|
||||
console.warn('compiling');
|
||||
return SolidityUtils.compile(data, compiler);
|
||||
})
|
||||
.then((result) => {
|
||||
console.warn('result in worker', result);
|
||||
return result;
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error('error in worker', error);
|
||||
throw error;
|
||||
});
|
||||
}
|
||||
|
||||
@ -79,14 +91,18 @@ function setFiles (files) {
|
||||
function getCompiler (build) {
|
||||
const { longVersion } = build;
|
||||
|
||||
if (!self.solc[longVersion]) {
|
||||
self.solc[longVersion] = SolidityUtils
|
||||
if (self.compiler.version !== longVersion) {
|
||||
self.compiler.version = longVersion;
|
||||
self.compiler.compiler = SolidityUtils
|
||||
.getCompiler(build)
|
||||
.then((compiler) => {
|
||||
self.solc[longVersion] = compiler;
|
||||
if (self.compiler.version === longVersion) {
|
||||
self.compiler.compiler = compiler;
|
||||
}
|
||||
|
||||
return compiler;
|
||||
});
|
||||
}
|
||||
|
||||
return Promise.resolve(self.solc[longVersion]);
|
||||
return Promise.resolve(self.compiler.compiler);
|
||||
}
|
||||
|
@ -43,7 +43,7 @@ build_rpc_trait! {
|
||||
#[rpc(meta, name = "personal_sendTransaction")]
|
||||
fn send_transaction(&self, Self::Metadata, TransactionRequest, String) -> BoxFuture<H256, Error>;
|
||||
|
||||
/// Deprecated alias for `personal_sendTransaction`.
|
||||
/// @deprecated alias for `personal_sendTransaction`.
|
||||
#[rpc(meta, name = "personal_signAndSendTransaction")]
|
||||
fn sign_and_send_transaction(&self, Self::Metadata, TransactionRequest, String) -> BoxFuture<H256, Error>;
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
#!/bin/bash
|
||||
cd docker/hub
|
||||
if [ "$1" == "latest" ]; then DOCKER_BUILD_TAG="beta-release"; fi
|
||||
docker build --build-arg BUILD_TAG=$DOCKER_BUILD_TAG --no-cache=true --tag ethcore/parity:$1 .
|
||||
docker build --build-arg BUILD_TAG=$DOCKER_BUILD_TAG --no-cache=true --tag $2/parity:$1 .
|
||||
docker push $2/parity:$1
|
||||
|
Loading…
Reference in New Issue
Block a user