diff --git a/packages/fether-electron/src/main/cli/index.js b/packages/fether-electron/src/main/cli/index.js index 8709829718897d3880f3230e5d3592a134050015..928f06c483e10c33538a92e02479fa916bd65515 100644 --- a/packages/fether-electron/src/main/cli/index.js +++ b/packages/fether-electron/src/main/cli/index.js @@ -22,6 +22,10 @@ if (process.defaultApp !== true) { cli .version(version) .allowUnknownOption() + .option( + '--chain', + 'The network to connect to, can be one of "foundation", "kovan" or "ropsten". (default: "kovan")' + ) .option( '--no-run-parity', `${productName} will not attempt to run the locally installed parity.` diff --git a/packages/fether-electron/src/main/index.js b/packages/fether-electron/src/main/index.js index 5cf7436e702e0cc03a791fc0aabc2db9b8fd9dbd..732e7743e250557b309f29daf736536158ed86a2 100644 --- a/packages/fether-electron/src/main/index.js +++ b/packages/fether-electron/src/main/index.js @@ -59,7 +59,9 @@ function createWindow () { ) .then(() => // Run parity when installed - runParity(err => handleError(err, 'An error occured with Parity.')) + runParity(['--light', '--chain', cli.chain || 'kovan'], err => + handleError(err, 'An error occured with Parity.') + ) ) .then(() => { // Notify the renderers diff --git a/packages/fether-react/src/index.js b/packages/fether-react/src/index.js index 93722815ecb5f9e9ce19e93204413f56e6f4a3f4..64693a9a7a0a060c94ba47d30e658e3e00ae183a 100644 --- a/packages/fether-react/src/index.js +++ b/packages/fether-react/src/index.js @@ -11,10 +11,8 @@ import App from './App'; import rootStore from './stores'; import './index.css'; -// Show debug logs in dev environment -if (process.env.NODE_ENV === 'development') { - window.localStorage.debug = 'fether*'; // https://github.com/visionmedia/debug#browser-support -} +// Show debug logs +window.localStorage.debug = 'fether*'; // https://github.com/visionmedia/debug#browser-support ReactDOM.render( diff --git a/packages/fether-react/src/stores/createAccountStore.js b/packages/fether-react/src/stores/createAccountStore.js index c8bc77fb9d12fe7794f0364f47705fd7fe2e6ed1..4c39fdd64a92cb5abb65a5a572c0ba8f37c7fbac 100644 --- a/packages/fether-react/src/stores/createAccountStore.js +++ b/packages/fether-react/src/stores/createAccountStore.js @@ -5,8 +5,11 @@ import { action, observable } from 'mobx'; +import Debug from '../utils/debug'; import parityStore from './parityStore'; +const debug = Debug('createAccountStore'); + export class CreateAccountStore { @observable address = null; @observable isImport = false; // Are we creating a new account, or importing via phrase? @@ -22,10 +25,12 @@ export class CreateAccountStore { } generateNewAccount = () => { + debug('Generating new account.'); return parityStore.api.parity.generateSecretPhrase().then(this.setPhrase); }; saveAccountToParity = password => { + debug('Saving account to Parity.'); return parityStore.api.parity .newAccountFromPhrase(this.phrase, password) .then(() => diff --git a/packages/fether-react/src/stores/parityStore.js b/packages/fether-react/src/stores/parityStore.js index dd0adbb3096457be0b83703eb966b5fbe6a40f36..365267ab5badce8b56fc56f8c707b9d3684151cd 100644 --- a/packages/fether-react/src/stores/parityStore.js +++ b/packages/fether-react/src/stores/parityStore.js @@ -12,7 +12,7 @@ import store from 'store'; import Debug from '../utils/debug'; import LS_PREFIX from './utils/lsPrefix'; -const debug = Debug('sendStore'); +const debug = Debug('parityStore'); const electron = isElectron() ? window.require('electron') : null; const LS_KEY = `${LS_PREFIX}::secureToken`; @@ -64,6 +64,7 @@ export class ParityStore { defaultPort}`; } + debug(`Connecting to ${provider}.`); const api = new Api( new Api.Provider.Ws( provider, @@ -78,8 +79,8 @@ export class ParityStore { this.api = api; // TODO This is not working - // api.on('connected', () => ...); - // api.on('disconnected', () => ...); + // api.on('connected', () => this.setIsApiConnected(true)); + // api.on('disconnected', () => this.setIsApiConnected(false)); // So instead, we poll every 1s setInterval(() => { this.setIsApiConnected(api.isConnected); @@ -90,6 +91,7 @@ export class ParityStore { const { ipcRenderer } = electron; // Request new token from Electron + debug('Requesting new token.'); ipcRenderer.send('asynchronous-message', 'signer-new-token'); ipcRenderer.once('asynchronous-reply', (_, token) => { if (!token) { @@ -111,7 +113,7 @@ export class ParityStore { if (isApiConnected === this.isApiConnected) { return; } - + debug(`Api is now ${isApiConnected ? 'connected' : 'disconnected'}.`); this.isApiConnected = isApiConnected; }; @@ -135,6 +137,7 @@ export class ParityStore { return; } + debug(`Setting token in localStorage.`); this.token = token; // If we receive a new token, then we try to connect to the Api with this diff --git a/packages/parity-electron/README.md b/packages/parity-electron/README.md index 3f6e24e9ca75e364d4f961afb2c4d43924479fbf..f88909a69d72e400f6e4bcfb57ef3d2e25204d4b 100644 --- a/packages/parity-electron/README.md +++ b/packages/parity-electron/README.md @@ -57,13 +57,14 @@ Returns the path to the Parity path inside Electron's `userData` folder, even if Resolves to `true` if Parity is currently running, or to `false` if not. -#### `runParity(onParityError: Function): Promise` +#### `runParity(additionalFlags: Array, onParityError: Function): Promise` Spawns a child process to run Parity. If some `cli` flags are passed into the options in `parityElectron`, then those flags will be passed down to Parity itself. -| Option | Type | Description | -| --------------- | ---------- | ------------------------------------------------------------------ | -| `onParityError` | `Function` | Callback with `error` as argument when Parity encounters an error. | +| Option | Type | Description | +| ----------------- | --------------- | --------------------------------------------------------------------------------------------- | +| `additionalFlasg` | `Array` | Addtional flags to pass to Parity, listed as an array, to be passed to `child_process.spawn`. | +| `onParityError` | `Function` | Callback with `error` as argument when Parity encounters an error. | #### `killParity(): Promise` diff --git a/packages/parity-electron/src/runParity.js b/packages/parity-electron/src/runParity.js index 38c2528cfab3602f93b61bc3298eb063d203765e..cd2f277a1f4a3a75ada6ca0ac2c5caee8b268374 100644 --- a/packages/parity-electron/src/runParity.js +++ b/packages/parity-electron/src/runParity.js @@ -26,7 +26,7 @@ const catchableErrors = [ 'IO error: While lock file:' ]; -export const runParity = async onParityError => { +export const runParity = async (additionalFlags, onParityError) => { // Do not run parity with --no-run-parity if (cli.runParity === false) { return; @@ -50,7 +50,7 @@ export const runParity = async onParityError => { let logLastLine; // Always contains last line of the Parity logs // Run an instance of parity with the correct args - const args = [...parityArgv(), '--light']; + const args = [...parityArgv(), ...additionalFlags]; parity = spawn(parityPath, args); logger()('@parity/electron:main')(logCommand(parityPath, args));