Merge pull request #951 from mattermost/PLT-500
PLT-500 fixing connection msg issues
Этот коммит содержится в:
@@ -9,28 +9,71 @@ export default class ErrorBar extends React.Component {
|
|||||||
|
|
||||||
this.onErrorChange = this.onErrorChange.bind(this);
|
this.onErrorChange = this.onErrorChange.bind(this);
|
||||||
this.handleClose = this.handleClose.bind(this);
|
this.handleClose = this.handleClose.bind(this);
|
||||||
|
this.resize = this.resize.bind(this);
|
||||||
this.prevTimer = null;
|
this.prevTimer = null;
|
||||||
|
|
||||||
this.state = ErrorStore.getLastError();
|
this.state = ErrorStore.getLastError();
|
||||||
if (this.state && this.state.message) {
|
if (this.isValidError(this.state)) {
|
||||||
this.prevTimer = setTimeout(this.handleClose, 10000);
|
this.prevTimer = setTimeout(this.handleClose, 10000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isValidError(s) {
|
||||||
|
if (!s) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!s.message) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (s.connErrorCount && s.connErrorCount >= 1 && s.connErrorCount < 7) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
isConnectionError(s) {
|
||||||
|
if (!s.connErrorCount || s.connErrorCount === 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (s.connErrorCount > 7) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
resize() {
|
||||||
|
if (this.isValidError(this.state)) {
|
||||||
|
var height = $(React.findDOMNode(this)).outerHeight();
|
||||||
|
height = height < 30 ? 30 : height;
|
||||||
|
$('body').css('padding-top', height + 'px');
|
||||||
|
} else {
|
||||||
|
$('body').css('padding-top', '0');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
ErrorStore.addChangeListener(this.onErrorChange);
|
ErrorStore.addChangeListener(this.onErrorChange);
|
||||||
$('body').css('padding-top', $(React.findDOMNode(this)).outerHeight());
|
|
||||||
$(window).resize(() => {
|
$(window).resize(() => {
|
||||||
if (this.state && this.state.message) {
|
this.resize();
|
||||||
$('body').css('padding-top', $(React.findDOMNode(this)).outerHeight());
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this.resize();
|
||||||
}
|
}
|
||||||
|
|
||||||
componentWillUnmount() {
|
componentWillUnmount() {
|
||||||
ErrorStore.removeChangeListener(this.onErrorChange);
|
ErrorStore.removeChangeListener(this.onErrorChange);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
componentDidUpdate() {
|
||||||
|
this.resize();
|
||||||
|
}
|
||||||
|
|
||||||
onErrorChange() {
|
onErrorChange() {
|
||||||
var newState = ErrorStore.getLastError();
|
var newState = ErrorStore.getLastError();
|
||||||
|
|
||||||
@@ -41,7 +84,9 @@ export default class ErrorBar extends React.Component {
|
|||||||
|
|
||||||
if (newState) {
|
if (newState) {
|
||||||
this.setState(newState);
|
this.setState(newState);
|
||||||
this.prevTimer = setTimeout(this.handleClose, 10000);
|
if (!this.isConnectionError(newState)) {
|
||||||
|
this.prevTimer = setTimeout(this.handleClose, 10000);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
this.setState({message: null});
|
this.setState({message: null});
|
||||||
}
|
}
|
||||||
@@ -52,22 +97,11 @@ export default class ErrorBar extends React.Component {
|
|||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
ErrorStore.storeLastError(null);
|
this.setState({message: null});
|
||||||
ErrorStore.emitChange();
|
|
||||||
|
|
||||||
$('body').css('padding-top', '0');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
if (!this.state) {
|
if (!this.isValidError(this.state)) {
|
||||||
return <div/>;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!this.state.message) {
|
|
||||||
return <div/>;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.state.connErrorCount < 7) {
|
|
||||||
return <div/>;
|
return <div/>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -50,8 +50,10 @@ class SocketStoreClass extends EventEmitter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.failCount = 0;
|
this.failCount = 0;
|
||||||
ErrorStore.storeLastError(null);
|
if (ErrorStore.getLastError()) {
|
||||||
ErrorStore.emitChange();
|
ErrorStore.storeLastError(null);
|
||||||
|
ErrorStore.emitChange();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
conn.onclose = () => {
|
conn.onclose = () => {
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
var BrowserStore = require('../stores/browser_store.jsx');
|
var BrowserStore = require('../stores/browser_store.jsx');
|
||||||
var TeamStore = require('../stores/team_store.jsx');
|
var TeamStore = require('../stores/team_store.jsx');
|
||||||
|
var ErrorStore = require('../stores/error_store.jsx');
|
||||||
|
|
||||||
export function track(category, action, label, prop, val) {
|
export function track(category, action, label, prop, val) {
|
||||||
global.window.analytics.track(action, {category: category, label: label, property: prop, value: val});
|
global.window.analytics.track(action, {category: category, label: label, property: prop, value: val});
|
||||||
@@ -27,7 +28,16 @@ function handleError(methodName, xhr, status, err) {
|
|||||||
msg = 'error in ' + methodName + ' status=' + status + ' statusCode=' + xhr.status + ' err=' + err;
|
msg = 'error in ' + methodName + ' status=' + status + ' statusCode=' + xhr.status + ' err=' + err;
|
||||||
|
|
||||||
if (xhr.status === 0) {
|
if (xhr.status === 0) {
|
||||||
e = {message: 'There appears to be a problem with your internet connection', connErrorCount: 1};
|
let errorCount = 1;
|
||||||
|
const oldError = ErrorStore.getLastError();
|
||||||
|
let connectError = 'There appears to be a problem with your internet connection';
|
||||||
|
|
||||||
|
if (oldError && oldError.connErrorCount) {
|
||||||
|
errorCount += oldError.connErrorCount;
|
||||||
|
connectError = 'We cannot reach the Mattermost service. The service may be down or misconfigured. Please contact an administrator to make sure the WebSocket port is configured properly.';
|
||||||
|
}
|
||||||
|
|
||||||
|
e = {message: connectError, connErrorCount: errorCount};
|
||||||
} else {
|
} else {
|
||||||
e = {message: 'We received an unexpected status code from the server (' + xhr.status + ')'};
|
e = {message: 'We received an unexpected status code from the server (' + xhr.status + ')'};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.bad-connection {
|
.bad-connection {
|
||||||
background-color: rgb(255, 255, 172);
|
background-color: rgb(255, 255, 172) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.textarea-div {
|
.textarea-div {
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user