aboutsummaryrefslogtreecommitdiffstats
path: root/packages/website
diff options
context:
space:
mode:
authorFabio Berger <me@fabioberger.com>2018-01-29 19:10:49 +0800
committerFabio Berger <me@fabioberger.com>2018-01-29 19:10:49 +0800
commitaf08177f79decd8dd3194d300a1fa43d43872229 (patch)
tree1158178bef439bd1e5f34623a98ea6efd7b50b15 /packages/website
parent45fdfc2d3d2bcfcb37d16f29df2e30524e6d7717 (diff)
downloaddexon-sol-tools-af08177f79decd8dd3194d300a1fa43d43872229.tar.gz
dexon-sol-tools-af08177f79decd8dd3194d300a1fa43d43872229.tar.zst
dexon-sol-tools-af08177f79decd8dd3194d300a1fa43d43872229.zip
Make it such that users can switch between Ledger accounts without first switching back to an injected provider
Diffstat (limited to 'packages/website')
-rw-r--r--packages/website/ts/blockchain.ts6
-rw-r--r--packages/website/ts/components/dialogs/ledger_config_dialog.tsx5
-rw-r--r--packages/website/ts/components/top_bar/provider_picker.tsx10
3 files changed, 12 insertions, 9 deletions
diff --git a/packages/website/ts/blockchain.ts b/packages/website/ts/blockchain.ts
index e0f5a496f..71927ef3b 100644
--- a/packages/website/ts/blockchain.ts
+++ b/packages/website/ts/blockchain.ts
@@ -190,8 +190,10 @@ export class Blockchain {
}
// Cache injected provider so that we can switch the user back to it easily
- this._cachedProvider = this._web3Wrapper.getProviderObj();
- this._cachedProviderNetworkId = this.networkId;
+ if (_.isUndefined(this._cachedProvider)) {
+ this._cachedProvider = this._web3Wrapper.getProviderObj();
+ this._cachedProviderNetworkId = this.networkId;
+ }
this._userAddress = '';
this._dispatcher.updateUserAddress(''); // Clear old userAddress
diff --git a/packages/website/ts/components/dialogs/ledger_config_dialog.tsx b/packages/website/ts/components/dialogs/ledger_config_dialog.tsx
index a17a51622..66b04f198 100644
--- a/packages/website/ts/components/dialogs/ledger_config_dialog.tsx
+++ b/packages/website/ts/components/dialogs/ledger_config_dialog.tsx
@@ -265,7 +265,10 @@ export class LedgerConfigDialog extends React.Component<LedgerConfigDialogProps,
return false;
}
- if (this.props.providerType !== ProviderType.Ledger) {
+ if (
+ this.props.providerType !== ProviderType.Ledger ||
+ (this.props.providerType === ProviderType.Ledger && this.props.networkId !== this.state.preferredNetworkId)
+ ) {
await this.props.blockchain.updateProviderToLedgerAsync(this.state.preferredNetworkId);
}
diff --git a/packages/website/ts/components/top_bar/provider_picker.tsx b/packages/website/ts/components/top_bar/provider_picker.tsx
index 75261ab94..98678dee6 100644
--- a/packages/website/ts/components/top_bar/provider_picker.tsx
+++ b/packages/website/ts/components/top_bar/provider_picker.tsx
@@ -37,17 +37,15 @@ export class ProviderPicker extends React.Component<ProviderPickerProps, Provide
// Show dropdown with two options
return (
<div style={{ width: 225, overflow: 'hidden' }}>
- <RadioButtonGroup
- name="provider"
- defaultSelected={this.props.providerType}
- onChange={this._onProviderRadioChanged.bind(this)}
- >
+ <RadioButtonGroup name="provider" defaultSelected={this.props.providerType}>
<RadioButton
+ onClick={this._onProviderRadioChanged.bind(this, ProviderType.Injected)}
style={{ ...menuStyle, backgroundColor: !isLedgerSelected && colors.grey50 }}
value={ProviderType.Injected}
label={this._renderLabel(this.props.injectedProviderName, !isLedgerSelected)}
/>
<RadioButton
+ onClick={this._onProviderRadioChanged.bind(this, ProviderType.Ledger)}
style={{ ...menuStyle, backgroundColor: isLedgerSelected && colors.grey50 }}
value={ProviderType.Ledger}
label={this._renderLabel('Ledger Nano S', isLedgerSelected)}
@@ -80,7 +78,7 @@ export class ProviderPicker extends React.Component<ProviderPickerProps, Provide
</div>
);
}
- private _onProviderRadioChanged(e: any, value: string) {
+ private _onProviderRadioChanged(value: string) {
if (value === ProviderType.Ledger) {
this.props.onToggleLedgerDialog();
} else {