From 557aa68636ae8b23b33b761d9e9fe0f5b8cf1120 Mon Sep 17 00:00:00 2001 From: Joram Wilander Date: Tue, 29 Nov 2016 10:37:59 -0500 Subject: PLT-4233 When internet reconnects, reconnect websocket and grab latest posts, etc. (#4500) * When internet reconnects, reconnect websocket and grab latest posts, etc. * Rename internet connection variable --- webapp/client/client.jsx | 5 +++++ webapp/client/web_client.jsx | 19 +++++++++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) (limited to 'webapp/client') diff --git a/webapp/client/client.jsx b/webapp/client/client.jsx index ff42fb7ac..75e47267c 100644 --- a/webapp/client/client.jsx +++ b/webapp/client/client.jsx @@ -156,6 +156,10 @@ export default class Client { // NO-OP for inherited classes to override } + handleSuccess(res) { // eslint-disable-line no-unused-vars + // NO-OP for inherited classes to override + } + handleResponse(methodName, successCallback, errorCallback, err, res) { if (res && res.header) { this.serverVersion = res.header[HEADER_X_VERSION_ID]; @@ -212,6 +216,7 @@ export default class Client { console.error('Missing response body for ' + methodName); // eslint-disable-line no-console successCallback('', res); } + this.handleSuccess(res); } } diff --git a/webapp/client/web_client.jsx b/webapp/client/web_client.jsx index 85ced325e..62870c5bc 100644 --- a/webapp/client/web_client.jsx +++ b/webapp/client/web_client.jsx @@ -2,9 +2,12 @@ // See License.txt for license information. import Client from './client.jsx'; -import TeamStore from '../stores/team_store.jsx'; -import BrowserStore from '../stores/browser_store.jsx'; + +import TeamStore from 'stores/team_store.jsx'; +import BrowserStore from 'stores/browser_store.jsx'; + import * as GlobalActions from 'actions/global_actions.jsx'; +import {reconnect} from 'actions/websocket_actions.jsx'; import request from 'superagent'; @@ -14,6 +17,7 @@ class WebClientClass extends Client { constructor() { super(); this.enableLogErrorsToConsole(true); + this.hasInternetConnection = true; TeamStore.addChangeListener(this.onTeamStoreChanged.bind(this)); } @@ -37,6 +41,17 @@ class WebClientClass extends Client { if (err.status === HTTP_UNAUTHORIZED && res.req.url !== '/api/v3/users/login') { GlobalActions.emitUserLoggedOutEvent('/login'); } + + if (err.status == null) { + this.hasInternetConnection = false; + } + } + + handleSuccess = (res) => { // eslint-disable-line no-unused-vars + if (res && !this.hasInternetConnection) { + reconnect(); + this.hasInternetConnection = true; + } } // not sure why but super.login doesn't work if using an () => arrow functions. -- cgit v1.2.3-1-g7c22