From ff741740eebceb43b1d69b13d97ae7eed2aa32d1 Mon Sep 17 00:00:00 2001 From: Joram Wilander Date: Mon, 13 Feb 2017 09:27:28 -0500 Subject: Increase performance when receiving messages (#5375) --- webapp/components/needs_team.jsx | 9 +++++++++ webapp/components/post_view/post_view_cache.jsx | 2 +- webapp/components/team_sidebar/components/team_button.jsx | 10 +++++++++- 3 files changed, 19 insertions(+), 2 deletions(-) (limited to 'webapp/components') diff --git a/webapp/components/needs_team.jsx b/webapp/components/needs_team.jsx index 0b91814c3..fb6029c2b 100644 --- a/webapp/components/needs_team.jsx +++ b/webapp/components/needs_team.jsx @@ -42,6 +42,8 @@ import SelectTeamModal from 'components/admin_console/select_team_modal.jsx'; import iNoBounce from 'inobounce'; import * as UserAgent from 'utils/user_agent.jsx'; +const UNREAD_CHECK_TIME_MILLISECONDS = 10000; + export default class NeedsTeam extends React.Component { constructor(params) { super(params); @@ -49,6 +51,8 @@ export default class NeedsTeam extends React.Component { this.onTeamChanged = this.onTeamChanged.bind(this); this.onPreferencesChanged = this.onPreferencesChanged.bind(this); + this.blurTime = new Date().getTime(); + const team = TeamStore.getCurrent(); this.state = { @@ -97,11 +101,16 @@ export default class NeedsTeam extends React.Component { AsyncClient.viewChannel(); ChannelStore.resetCounts(ChannelStore.getCurrentId()); ChannelStore.emitChange(); + window.isActive = true; + if (new Date().getTime() - this.blurTime > UNREAD_CHECK_TIME_MILLISECONDS) { + AsyncClient.getMyChannelMembers(); + } }); $(window).on('blur', () => { window.isActive = false; + this.blurTime = new Date().getTime(); if (UserStore.getCurrentUser()) { AsyncClient.viewChannel(''); } diff --git a/webapp/components/post_view/post_view_cache.jsx b/webapp/components/post_view/post_view_cache.jsx index 9c3f1db1b..b0b35a5c0 100644 --- a/webapp/components/post_view/post_view_cache.jsx +++ b/webapp/components/post_view/post_view_cache.jsx @@ -33,7 +33,7 @@ export default class PostViewCache extends React.Component { componentWillUnmount() { if (UserStore.getCurrentUser()) { - AsyncClient.viewChannel(''); + AsyncClient.viewChannel('', this.state.currentChannelId || ''); } ChannelStore.removeChangeListener(this.onChannelChange); } diff --git a/webapp/components/team_sidebar/components/team_button.jsx b/webapp/components/team_sidebar/components/team_button.jsx index 2df21b20b..6fbf8aef9 100644 --- a/webapp/components/team_sidebar/components/team_button.jsx +++ b/webapp/components/team_sidebar/components/team_button.jsx @@ -3,6 +3,8 @@ import Constants from 'utils/constants.jsx'; +import {switchTeams} from 'actions/team_actions.jsx'; + import React from 'react'; import {Link} from 'react-router/es6'; import {Tooltip, OverlayTrigger} from 'react-bootstrap'; @@ -11,9 +13,15 @@ export default class TeamButton extends React.Component { constructor(props) { super(props); + this.handleSwitch = this.handleSwitch.bind(this); this.handleDisabled = this.handleDisabled.bind(this); } + handleSwitch(e) { + e.preventDefault(); + switchTeams(this.props.url); + } + handleDisabled(e) { e.preventDefault(); } @@ -22,7 +30,7 @@ export default class TeamButton extends React.Component { let teamClass = this.props.active ? 'active' : ''; const btnClass = this.props.btnClass; const disabled = this.props.disabled ? 'team-disabled' : ''; - const handleClick = (this.props.active || this.props.disabled) ? this.handleDisabled : null; + const handleClick = (this.props.active || this.props.disabled) ? this.handleDisabled : this.handleSwitch; let badge; if (!teamClass) { -- cgit v1.2.3-1-g7c22