summaryrefslogtreecommitdiffhomepage
path: root/app/lib
diff options
context:
space:
mode:
Diffstat (limited to 'app/lib')
-rw-r--r--app/lib/backend.js27
1 files changed, 26 insertions, 1 deletions
diff --git a/app/lib/backend.js b/app/lib/backend.js
index d028f4f8fe..adec32fdd4 100644
--- a/app/lib/backend.js
+++ b/app/lib/backend.js
@@ -1,6 +1,6 @@
import Enum from './enum';
import { EventEmitter } from 'events';
-import { servers } from '../constants';
+import { ConnectionState as ReduxConnectionState, servers } from '../constants';
const EventType = Enum('connect', 'connecting', 'disconnect', 'login', 'logging', 'logout', 'updatedIp');
const ConnectionState = Enum('disconnected', 'connecting', 'connected');
@@ -33,6 +33,31 @@ export default class Backend extends EventEmitter {
// Public methods
+ /**
+ * Patch backend state.
+ *
+ * Currently backend does not have external state
+ * such as VPN connection status or IP address.
+ *
+ * So far we store everything in redux and have to
+ * sync redux state with backend.
+ *
+ * In future this will be the other way around.
+ */
+ syncWithReduxStore(store) {
+ const mapConnStatus = (s) => {
+ const S = ReduxConnectionState;
+ const BS = ConnectionState;
+ switch(s) {
+ case S.connected: return BS.connected;
+ case S.connecting: return BS.connecting;
+ default: return BS.disconnected;
+ }
+ };
+ const { connect } = store.getState();
+ this._connStatus = mapConnStatus(connect.status);
+ }
+
serverInfo(key) {
switch(key) {
case 'fastest': return this.fastestServer();