diff options
| author | Oskar Nyberg <oskar@mullvad.net> | 2020-05-27 15:45:29 +0200 |
|---|---|---|
| committer | Oskar Nyberg <oskar@mullvad.net> | 2020-05-27 18:05:13 +0200 |
| commit | 6384237e346c470e01c49bc0359d6b7adbbd490b (patch) | |
| tree | 9184e06db32fc17d491fae35af5e81679c9d7ca9 /gui/src | |
| parent | 597babc65b8883a2bbe58935245a530abe9b9707 (diff) | |
| download | mullvadvpn-6384237e346c470e01c49bc0359d6b7adbbd490b.tar.xz mullvadvpn-6384237e346c470e01c49bc0359d6b7adbbd490b.zip | |
Add automatic WireGuard key verification
Diffstat (limited to 'gui/src')
| -rw-r--r-- | gui/src/renderer/components/WireguardKeys.tsx | 39 |
1 files changed, 25 insertions, 14 deletions
diff --git a/gui/src/renderer/components/WireguardKeys.tsx b/gui/src/renderer/components/WireguardKeys.tsx index b11ffe59c0..c2df53eeaa 100644 --- a/gui/src/renderer/components/WireguardKeys.tsx +++ b/gui/src/renderer/components/WireguardKeys.tsx @@ -36,13 +36,19 @@ export interface IProps { export interface IState { recentlyGeneratedKey: boolean; + userHasInitiatedVerification: boolean; } export default class WireguardKeys extends Component<IProps, IState> { public state = { recentlyGeneratedKey: false, + userHasInitiatedVerification: false, }; + public componentDidMount() { + this.verifyKey(); + } + public componentDidUpdate(prevProps: IProps) { const prevKey = prevProps.keyState.type === 'key-set' ? prevProps.keyState.key.publicKey : undefined; @@ -119,7 +125,7 @@ export default class WireguardKeys extends Component<IProps, IState> { <View style={styles.wgkeys__row}> <AppButton.BlueButton disabled={this.isVerifyButtonDisabled()} - onClick={this.getOnVerifyKeyCb()}> + onClick={this.handleVerifyKeyPress}> <AppButton.Label> {messages.pgettext('wireguard-key-view', 'Verify key')} </AppButton.Label> @@ -168,18 +174,21 @@ export default class WireguardKeys extends Component<IProps, IState> { } } - private getOnVerifyKeyCb() { - return () => { - switch (this.props.keyState.type) { - case 'key-set': { - const key = this.props.keyState.key; - this.props.onVerifyKey(key); - break; - } - default: - log.error(`onVerifyKey called from invalid state - ${this.props.keyState.type}`); + private handleVerifyKeyPress = () => { + this.setState({ userHasInitiatedVerification: true }); + this.verifyKey(); + }; + + private verifyKey() { + switch (this.props.keyState.type) { + case 'key-set': { + const key = this.props.keyState.key; + this.props.onVerifyKey(key); + break; } - }; + default: + log.error(`onVerifyKey called from invalid state - ${this.props.keyState.type}`); + } } /// Action button can either generate or verify a key @@ -254,10 +263,12 @@ export default class WireguardKeys extends Component<IProps, IState> { private keyValidityLabel() { switch (this.props.keyState.type) { case 'being-verified': - return <ImageView source="icon-spinner" height={20} width={20} />; + return this.state.userHasInitiatedVerification ? ( + <ImageView source="icon-spinner" height={20} width={20} /> + ) : null; case 'key-set': { const key = this.props.keyState.key; - if (key.valid === true) { + if (key.valid === true && this.state.userHasInitiatedVerification) { return ( <Text style={styles.wgkeys__valid_key}> {messages.pgettext('wireguard-key-view', 'Key is valid')} |
