summaryrefslogtreecommitdiffhomepage
path: root/app/lib
diff options
context:
space:
mode:
authorAndrej Mihajlov <and@codeispoetry.ru>2017-03-20 20:40:02 +0000
committerAndrej Mihajlov <and@codeispoetry.ru>2017-03-20 20:40:02 +0000
commit69131651560f8e38c99e8d025e1aca2ca7ecbbc5 (patch)
tree2296a3a157553e95c9ef48a624451df411aa69e1 /app/lib
parent812aa1832672a3ecce3198950269efb862966745 (diff)
downloadmullvadvpn-69131651560f8e38c99e8d025e1aca2ca7ecbbc5.tar.xz
mullvadvpn-69131651560f8e38c99e8d025e1aca2ca7ecbbc5.zip
Add backend errors and polish error views
Diffstat (limited to 'app/lib')
-rw-r--r--app/lib/backend.js54
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;