From bb92f46658c09984b98c8aff0a47134f6ebb599f Mon Sep 17 00:00:00 2001 From: Ashley Ruglys Date: Thu, 19 Mar 2020 17:48:41 +0100 Subject: [PATCH 1/4] Add cli to wasm tests, update and bring closer to the substrate browser code --- .gitlab-ci.yml | 1 + cli/browser-demo/index.html | 5 ++++- cli/src/browser.rs | 42 ++++++++++++++----------------------- 3 files changed, 21 insertions(+), 27 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2929cd82636b..a9360c53625f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -159,6 +159,7 @@ check-web-wasm: &test - time cargo build --locked --target=wasm32-unknown-unknown --manifest-path primitives/Cargo.toml - time cargo build --locked --target=wasm32-unknown-unknown --manifest-path rpc/Cargo.toml - time cargo build --locked --target=wasm32-unknown-unknown --manifest-path statement-table/Cargo.toml + - time cargo build --locked --target=wasm32-unknown-unknown --manifest-path cli/Cargo.toml --no-default-features --features browser - sccache -s diff --git a/cli/browser-demo/index.html b/cli/browser-demo/index.html index b039b0e957a1..e2b3db0f61e6 100644 --- a/cli/browser-demo/index.html +++ b/cli/browser-demo/index.html @@ -16,10 +16,13 @@ log('Loading WASM'); await init('./pkg/polkadot_cli_bg.wasm'); log('Successfully loaded WASM'); + log('Fetching chain spec'); + const chain_spec_response = await fetch("https://raw.githubusercontent.com/paritytech/polkadot/master/service/res/westend.json"); + const chain_spec_text = await chain_spec_response.text(); // Build our client. log('Starting client'); - let client = await start_client('westend', ws()); + let client = await start_client(chain_spec_text, 'info'); log('Client started'); client.rpcSubscribe('{"method":"chain_subscribeNewHead","params":[],"id":1,"jsonrpc":"2.0"}', diff --git a/cli/src/browser.rs b/cli/src/browser.rs index 5434b099dad7..e5d454122b30 100644 --- a/cli/src/browser.rs +++ b/cli/src/browser.rs @@ -14,50 +14,40 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -use crate::ChainSpec; use log::info; use wasm_bindgen::prelude::*; -use service::IsKusama; +use browser_utils::{ + Client, + browser_configuration, set_console_error_panic_hook, init_console_log, +}; +use std::str::FromStr; /// Starts the client. -/// -/// You must pass a libp2p transport that supports . #[wasm_bindgen] -pub async fn start_client(chain_spec: String, wasm_ext: browser_utils::Transport) -> Result { - start_inner(chain_spec, wasm_ext) +pub async fn start_client(chain_spec: String, log_level: String) -> Result { + start_inner(chain_spec, log_level) .await .map_err(|err| JsValue::from_str(&err.to_string())) } -async fn start_inner(chain_spec: String, wasm_ext: browser_utils::Transport) -> Result> { - browser_utils::set_console_error_panic_hook(); - browser_utils::init_console_log(log::Level::Info)?; +async fn start_inner(chain_spec: String, log_level: String) -> Result> { + set_console_error_panic_hook(); + init_console_log(log::Level::from_str(&log_level)?)?; - let chain_spec = ChainSpec::from(&chain_spec) - .ok_or_else(|| format!("Chain spec: {:?} doesn't exist.", chain_spec))? - .load() + let chain_spec = service::PolkadotChainSpec::from_json_bytes(chain_spec.as_bytes().to_vec()) .map_err(|e| format!("{:?}", e))?; - let config = browser_utils::browser_configuration(wasm_ext, chain_spec) - .await?; + let config = browser_configuration(chain_spec).await?; info!("Polkadot browser node"); info!(" version {}", config.full_version()); - info!(" by Parity Technologies, 2017-2019"); - if let Some(chain_spec) = &config.chain_spec { - info!("Chain specification: {}", chain_spec.name()); - if chain_spec.is_kusama() { - info!("----------------------------"); - info!("This chain is not in any way"); - info!(" endorsed by the "); - info!(" KUSAMA FOUNDATION "); - info!("----------------------------"); - } - } + info!(" by Parity Technologies, 2017-2020"); + info!("Chain specification: {}", config.expect_chain_spec().name()); info!("Node name: {}", config.name); info!("Roles: {:?}", config.roles); // Create the service. This is the most heavy initialization step. - let service = service::kusama_new_light(config).map_err(|e| format!("{:?}", e))?; + let service = service::kusama_new_light(config) + .map_err(|e| format!("{:?}", e))?; Ok(browser_utils::start_client(service)) } From d2b2ee685a6d68195cb63d6fcf9dc4522d7ce71e Mon Sep 17 00:00:00 2001 From: Ashley Ruglys Date: Thu, 19 Mar 2020 18:19:33 +0100 Subject: [PATCH 2/4] Remove ws.js --- cli/browser-demo/index.html | 1 - cli/browser-demo/ws.js | 148 ------------------------------------ 2 files changed, 149 deletions(-) delete mode 100644 cli/browser-demo/ws.js diff --git a/cli/browser-demo/index.html b/cli/browser-demo/index.html index e2b3db0f61e6..91ef075fc06d 100644 --- a/cli/browser-demo/index.html +++ b/cli/browser-demo/index.html @@ -6,7 +6,6 @@