diff options
Diffstat (limited to 'app/lib')
| -rw-r--r-- | app/lib/backend.js | 27 |
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(); |
