From 1006d46f55c65f6fd089e23853e7ae183e7c452a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A0=D0=BE=D0=BC=D0=B0?= Date: Mon, 2 Apr 2018 12:43:39 +0800 Subject: [PATCH 1/2] fx nodes pinging --- src/actions/connection.js | 1 + src/services/api/nodes-manager.js | 6 ++---- src/services/persistent-storage.js | 4 ++-- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/actions/connection.js b/src/actions/connection.js index ba8832f..8ccf774 100644 --- a/src/actions/connection.js +++ b/src/actions/connection.js @@ -14,6 +14,7 @@ export const initConnection = ({ commit, getters }, changeNode) => { if (status === 'error' || status === 'closed') { commit(types.WS_DISCONNECTED); active = false; + API.ChainListener.disable(); await API.Connection.disconnect(); initConnection({ commit, getters }, true); } diff --git a/src/services/api/nodes-manager.js b/src/services/api/nodes-manager.js index e2bbc5a..9344672 100644 --- a/src/services/api/nodes-manager.js +++ b/src/services/api/nodes-manager.js @@ -14,6 +14,7 @@ class NodesManager { // gets nodes ping data from storage _retrieveCachedNodesData() { const cachedData = PersistentStorage.getSavedNodesData(); + if (!cachedData) return; Object.keys(this._nodes).forEach(url => { const cachedNode = cachedData[url]; if (cachedNode && cachedNode.ping && typeof (cachedNode.ping) === 'number') { @@ -54,16 +55,13 @@ class NodesManager { testNodesPings() { const cachedData = PersistentStorage.getSavedNodesData(); if (cachedData) return; - // return new Promise((resolve) => { Promise.all(Object.keys(this._nodes).map(async (url) => { if (url !== this._selectedNodeUrl) { this._nodes[url].ping = await NodesManager._pingNode(url); } })).then(() => { - PersistentStorage.saveNodesData({ data: this._nodes }, { expires: 1 }); - // resolve(); + PersistentStorage.saveNodesData({ data: this._nodes }); }); - // }); } // retrieves nodes data from cache, selects fastest & returns it's url diff --git a/src/services/persistent-storage.js b/src/services/persistent-storage.js index 32c6326..24002ff 100644 --- a/src/services/persistent-storage.js +++ b/src/services/persistent-storage.js @@ -38,14 +38,14 @@ const PersistentStorage = { Cookies.remove('BITSHARES_USER_BRAINKEY'); }, saveNodesData: ({ data }) => { - Cookies.set('BITSHARES_NODES', data); + Cookies.set('BITSHARES_NODES', data, { expires: 1 }); }, getSavedNodesData: () => { const cachedData = Cookies.getJSON('BITSHARES_NODES'); if (typeof (cachedData) === 'object' && cachedData !== null) { return cachedData; } - return {}; + return null; }, getOpenledgerAddresses: () => { const cachedData = Cookies.getJSON('BITSHARES_OPENLEDGER_ADDRESSES'); From acbb8d0d30efb01291cce258e34bed7f11880c5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A0=D0=BE=D0=BC=D0=B0?= Date: Mon, 2 Apr 2018 13:09:46 +0800 Subject: [PATCH 2/2] fix disable --- src/actions/connection.js | 1 - src/services/api/chain-listener.js | 6 +++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/actions/connection.js b/src/actions/connection.js index 8ccf774..ba8832f 100644 --- a/src/actions/connection.js +++ b/src/actions/connection.js @@ -14,7 +14,6 @@ export const initConnection = ({ commit, getters }, changeNode) => { if (status === 'error' || status === 'closed') { commit(types.WS_DISCONNECTED); active = false; - API.ChainListener.disable(); await API.Connection.disconnect(); initConnection({ commit, getters }, true); } diff --git a/src/services/api/chain-listener.js b/src/services/api/chain-listener.js index eba703e..18f3af5 100644 --- a/src/services/api/chain-listener.js +++ b/src/services/api/chain-listener.js @@ -9,13 +9,13 @@ class ChainListener { this._subscribers = []; this._enabled = false; } - enable() { - if (this._enabled) this.disable(); + async enable() { + if (this._enabled) await this.disable(); Apis.instance().db_api().exec('set_subscribe_callback', [this._mainCallback.bind(this), true]); this._enabled = true; } disable() { - Apis.instance().db_api().exec('cancel_all_subscriptions', []).then(() => { + return Apis.instance().db_api().exec('cancel_all_subscriptions', []).then(() => { this._enabled = false; }); }