From c0a1fc309addf69de7f0dd5b44006b4517b93c83 Mon Sep 17 00:00:00 2001 From: Reed Garmsen Date: Mon, 17 Aug 2015 14:55:28 -0700 Subject: Refactored the NotifyCounts component out of the navbar.jsx file into its own file --- web/react/components/navbar.jsx | 45 +------------------------------ web/react/components/notify_counts.jsx | 49 ++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 44 deletions(-) create mode 100644 web/react/components/notify_counts.jsx (limited to 'web/react') diff --git a/web/react/components/navbar.jsx b/web/react/components/navbar.jsx index 61131fc1f..0449d8db6 100644 --- a/web/react/components/navbar.jsx +++ b/web/react/components/navbar.jsx @@ -1,7 +1,6 @@ // Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved. // See License.txt for license information. -var utils = require('../utils/utils.jsx'); var client = require('../utils/client.jsx'); var AsyncClient = require('../utils/async_client.jsx'); var UserStore = require('../stores/user_store.jsx'); @@ -10,54 +9,12 @@ var TeamStore = require('../stores/team_store.jsx'); var UserProfile = require('./user_profile.jsx'); var MessageWrapper = require('./message_wrapper.jsx'); +var NotifyCounts = require('./notify_counts.jsx'); var Constants = require('../utils/constants.jsx'); var ActionTypes = Constants.ActionTypes; var AppDispatcher = require('../dispatcher/app_dispatcher.jsx'); -function getCountsStateFromStores() { - var count = 0; - var channels = ChannelStore.getAll(); - var members = ChannelStore.getAllMembers(); - - channels.forEach(function setChannelInfo(channel) { - var channelMember = members[channel.id]; - if (channel.type === 'D') { - count += channel.total_msg_count - channelMember.msg_count; - } else if (channelMember.mention_count > 0) { - count += channelMember.mention_count; - } else if (channelMember.notify_level !== 'quiet' && channel.total_msg_count - channelMember.msg_count > 0) { - count += 1; - } - }); - - return {count: count}; -} - -var NotifyCounts = React.createClass({ - componentDidMount: function() { - ChannelStore.addChangeListener(this.onListenerChange); - }, - componentWillUnmount: function() { - ChannelStore.removeChangeListener(this.onListenerChange); - }, - onListenerChange: function() { - var newState = getCountsStateFromStores(); - if (!utils.areStatesEqual(newState, this.state)) { - this.setState(newState); - } - }, - getInitialState: function() { - return getCountsStateFromStores(); - }, - render: function() { - if (this.state.count) { - return {this.state.count}; - } - return null; - } -}); - function getStateFromStores() { return { channel: ChannelStore.getCurrent(), diff --git a/web/react/components/notify_counts.jsx b/web/react/components/notify_counts.jsx new file mode 100644 index 000000000..ebc49882b --- /dev/null +++ b/web/react/components/notify_counts.jsx @@ -0,0 +1,49 @@ +// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved. +// See License.txt for license information. + +var utils = require('../utils/utils.jsx'); +var ChannelStore = require('../stores/channel_store.jsx'); + +function getCountsStateFromStores() { + var count = 0; + var channels = ChannelStore.getAll(); + var members = ChannelStore.getAllMembers(); + + channels.forEach(function setChannelInfo(channel) { + var channelMember = members[channel.id]; + if (channel.type === 'D') { + count += channel.total_msg_count - channelMember.msg_count; + } else if (channelMember.mention_count > 0) { + count += channelMember.mention_count; + } else if (channelMember.notify_level !== 'quiet' && channel.total_msg_count - channelMember.msg_count > 0) { + count += 1; + } + }); + + return {count: count}; +} + +module.exports = React.createClass({ + displayName: 'NotifyCounts', + componentDidMount: function() { + ChannelStore.addChangeListener(this.onListenerChange); + }, + componentWillUnmount: function() { + ChannelStore.removeChangeListener(this.onListenerChange); + }, + onListenerChange: function() { + var newState = getCountsStateFromStores(); + if (!utils.areStatesEqual(newState, this.state)) { + this.setState(newState); + } + }, + getInitialState: function() { + return getCountsStateFromStores(); + }, + render: function() { + if (this.state.count) { + return {this.state.count}; + } + return null; + } +}); -- cgit v1.2.3-1-g7c22