diff options
author | Reed Garmsen <rgarmsen2295@gmail.com> | 2015-08-17 14:55:28 -0700 |
---|---|---|
committer | Reed Garmsen <rgarmsen2295@gmail.com> | 2015-08-17 14:55:28 -0700 |
commit | c0a1fc309addf69de7f0dd5b44006b4517b93c83 (patch) | |
tree | 647a5bb5f50ffe72db00778272139e695d0b8877 /web | |
parent | 10de9a9603a59c0e57cdb6d86fe04ab7244c52d8 (diff) | |
download | chat-c0a1fc309addf69de7f0dd5b44006b4517b93c83.tar.gz chat-c0a1fc309addf69de7f0dd5b44006b4517b93c83.tar.bz2 chat-c0a1fc309addf69de7f0dd5b44006b4517b93c83.zip |
Refactored the NotifyCounts component out of the navbar.jsx file into its own file
Diffstat (limited to 'web')
-rw-r--r-- | web/react/components/navbar.jsx | 45 | ||||
-rw-r--r-- | web/react/components/notify_counts.jsx | 49 |
2 files changed, 50 insertions, 44 deletions
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 <span className='badge badge-notify'>{this.state.count}</span>; - } - 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 <span className='badge badge-notify'>{this.state.count}</span>; + } + return null; + } +}); |