summaryrefslogtreecommitdiffhomepage
path: root/gui
diff options
context:
space:
mode:
Diffstat (limited to 'gui')
-rw-r--r--gui/packages/desktop/src/renderer/components/Connect.js12
-rw-r--r--gui/packages/desktop/src/renderer/lib/daemon-rpc.js32
-rw-r--r--gui/packages/desktop/test/components/Connect.spec.js4
3 files changed, 28 insertions, 20 deletions
diff --git a/gui/packages/desktop/src/renderer/components/Connect.js b/gui/packages/desktop/src/renderer/components/Connect.js
index 315c83ffc5..832e805bb8 100644
--- a/gui/packages/desktop/src/renderer/components/Connect.js
+++ b/gui/packages/desktop/src/renderer/components/Connect.js
@@ -39,10 +39,12 @@ type State = {
showCopyIPMessage: boolean,
};
-function getBlockReasonMessage(reason: BlockReason): string {
- switch (reason) {
- case 'auth_failed':
- return 'Authentication failed';
+function getBlockReasonMessage(blockReason: BlockReason): string {
+ switch (blockReason.reason) {
+ case 'auth_failed': {
+ const details = blockReason.details ? `: ${blockReason.details}` : '';
+ return `Authentication failed${details}`;
+ }
case 'ipv6_unavailable':
return 'Could not configure IPv6, please enable it on your system or disable it in the app';
case 'set_security_policy_error':
@@ -52,7 +54,7 @@ function getBlockReasonMessage(reason: BlockReason): string {
case 'no_matching_relay':
return 'No relay server matches the current settings';
default:
- return `Unknown error: ${(reason: empty)}`;
+ return `Unknown error: ${(blockReason.reason: empty)}`;
}
}
diff --git a/gui/packages/desktop/src/renderer/lib/daemon-rpc.js b/gui/packages/desktop/src/renderer/lib/daemon-rpc.js
index 630d813490..d984bfbf76 100644
--- a/gui/packages/desktop/src/renderer/lib/daemon-rpc.js
+++ b/gui/packages/desktop/src/renderer/lib/daemon-rpc.js
@@ -42,11 +42,14 @@ const LocationSchema = object({
});
export type BlockReason =
- | 'auth_failed'
- | 'ipv6_unavailable'
- | 'set_security_policy_error'
- | 'start_tunnel_error'
- | 'no_matching_relay';
+ | {
+ reason:
+ | 'ipv6_unavailable'
+ | 'set_security_policy_error'
+ | 'start_tunnel_error'
+ | 'no_matching_relay',
+ }
+ | { reason: 'auth_failed', details: ?string };
export type TunnelState = 'connecting' | 'connected' | 'disconnecting' | 'disconnected' | 'blocked';
@@ -230,17 +233,20 @@ const AccountDataSchema = object({
expiry: string,
});
-const allBlockReasons: Array<BlockReason> = [
- 'auth_failed',
- 'ipv6_unavailable',
- 'set_security_policy_error',
- 'start_tunnel_error',
- 'no_matching_relay',
-];
const TunnelStateTransitionSchema = oneOf(
object({
state: enumeration('blocked'),
- details: enumeration(...allBlockReasons),
+ details: oneOf(
+ object({
+ reason: enumeration(
+ 'ipv6_unavailable',
+ 'set_security_policy_error',
+ 'start_tunnel_error',
+ 'no_matching_relay',
+ ),
+ }),
+ object({ reason: enumeration('auth_failed'), details: maybe(string) }),
+ ),
}),
object({
state: enumeration('connected', 'connecting', 'disconnected', 'disconnecting'),
diff --git a/gui/packages/desktop/test/components/Connect.spec.js b/gui/packages/desktop/test/components/Connect.spec.js
index 57fd93229f..567518b0ce 100644
--- a/gui/packages/desktop/test/components/Connect.spec.js
+++ b/gui/packages/desktop/test/components/Connect.spec.js
@@ -45,7 +45,7 @@ describe('components/Connect', () => {
connection: {
...defaultProps.connection,
status: 'blocked',
- blockReason: 'no_matching_relay',
+ blockReason: { reason: 'no_matching_relay' },
},
});
@@ -157,7 +157,7 @@ describe('components/Connect', () => {
connection: {
...defaultProps.connection,
status: 'blocked',
- blockReason: 'no_matching_relay',
+ blockReason: { reason: 'no_matching_relay' },
},
});
const blockingAccordion = getComponent(component, 'blockingAccordion');