diff options
| author | Andrej Mihajlov <and@codeispoetry.ru> | 2017-03-20 20:40:02 +0000 |
|---|---|---|
| committer | Andrej Mihajlov <and@codeispoetry.ru> | 2017-03-20 20:40:02 +0000 |
| commit | 69131651560f8e38c99e8d025e1aca2ca7ecbbc5 (patch) | |
| tree | 2296a3a157553e95c9ef48a624451df411aa69e1 /app/lib | |
| parent | 812aa1832672a3ecce3198950269efb862966745 (diff) | |
| download | mullvadvpn-69131651560f8e38c99e8d025e1aca2ca7ecbbc5.tar.xz mullvadvpn-69131651560f8e38c99e8d025e1aca2ca7ecbbc5.zip | |
Add backend errors and polish error views
Diffstat (limited to 'app/lib')
| -rw-r--r-- | app/lib/backend.js | 54 |
1 files changed, 52 insertions, 2 deletions
diff --git a/app/lib/backend.js b/app/lib/backend.js index 88be11a5a6..1a21dda496 100644 --- a/app/lib/backend.js +++ b/app/lib/backend.js @@ -72,6 +72,39 @@ import { ConnectionState as ReduxConnectionState } from '../enums'; * @param {object} location data */ +class BackendError extends Error { + + constructor(code) { + super(''); + this.code = code; + this.title = BackendError.localizedTitle(code); + this.message = BackendError.localizedMessage(code); + } + + static localizedTitle(code) { + switch(code) { + case Backend.ErrorType.noCredit: + return 'Out of time'; + case Backend.ErrorType.noInternetConnection: + return 'Offline'; + default: + return 'Something went wrong'; + } + } + + static localizedMessage(code) { + switch(code) { + case Backend.ErrorType.noCredit: + return 'Buy more time, so you can continue using the internet securely'; + case Backend.ErrorType.noInternetConnection: + return 'Your internet connection will be secured when you get back online'; + default: + return ''; + } + } + +} + /** * Backend implementation * @@ -80,6 +113,19 @@ import { ConnectionState as ReduxConnectionState } from '../enums'; export default class Backend extends EventEmitter { /** + * Backend error enum + * + * @static + * + * @memberOf Backend + */ + static ErrorType = new Enum({ + noCredit: 1, + noInternetConnection: 2, + invalidAccount: 3 + }); + + /** * Event type enum * * @type {EventType} @@ -279,7 +325,7 @@ export default class Backend extends EventEmitter { } else if(account.startsWith('3333')) { // expire in 2038 res.paidUntil = moment('2038-01-01').toISOString(); } else { - err = new Error('Invalid account number.'); + err = new BackendError(Backend.ErrorType.invalidAccount); } // emit: login @@ -332,7 +378,11 @@ export default class Backend extends EventEmitter { // Prototype: Swedish servers will throw error during connect if(/se\d+\.mullvad\.net/.test(addr)) { - err = new Error('Server is unreachable'); + err = new BackendError(Backend.ErrorType.noInternetConnection); + } + + if(/us\d+\.mullvad\.net/.test(addr)) { + err = new BackendError(Backend.ErrorType.noCredit); } this._connStatus = Backend.ConnectionState.connected; |
