diff --git a/app/lib/components/ToolArea/ToolArea.jsx b/app/lib/components/ToolArea/ToolArea.jsx index 312e90e..46b1d3d 100644 --- a/app/lib/components/ToolArea/ToolArea.jsx +++ b/app/lib/components/ToolArea/ToolArea.jsx @@ -1,7 +1,7 @@ import React from 'react'; import { connect } from 'react-redux'; import PropTypes from 'prop-types'; -import * as stateActions from '../../redux/stateActions'; +import * as toolTabActions from '../../redux/stateActions'; import ParticipantList from '../ParticipantList/ParticipantList'; import Chat from '../Chat/Chat'; import Settings from '../Settings'; @@ -16,7 +16,8 @@ class ToolArea extends React.Component render() { const { - toolarea, + currentToolTab, + unread, setToolTab } = this.props; @@ -31,9 +32,11 @@ class ToolArea extends React.Component { setToolTab('chat'); }} - checked={toolarea.currentToolTab === 'chat'} + checked={currentToolTab === 'chat'} /> - +
@@ -47,7 +50,7 @@ class ToolArea extends React.Component { setToolTab('users'); }} - checked={toolarea.currentToolTab === 'users'} + checked={currentToolTab === 'users'} /> @@ -63,7 +66,7 @@ class ToolArea extends React.Component { setToolTab('settings'); }} - checked={toolarea.currentToolTab === 'settings'} + checked={currentToolTab === 'settings'} /> @@ -78,26 +81,19 @@ class ToolArea extends React.Component ToolArea.propTypes = { - advancedMode : PropTypes.bool, - toolarea : PropTypes.object.isRequired, - setToolTab : PropTypes.func.isRequired + advancedMode : PropTypes.bool, + currentToolTab : PropTypes.string.isRequired, + setToolTab : PropTypes.func.isRequired, + unread : PropTypes.number.isRequired }; -const mapStateToProps = (state) => -{ - return { - toolarea : state.toolarea - }; -}; +const mapStateToProps = (state) => ({ + currentToolTab : state.toolarea.currentToolTab, + unread : state.toolarea.unread +}); -const mapDispatchToProps = (dispatch) => -{ - return { - setToolTab : (toolTab) => - { - dispatch(stateActions.setToolTab(toolTab)); - } - }; +const mapDispatchToProps = { + setToolTab : toolTabActions.setToolTab }; const ToolAreaContainer = connect( diff --git a/app/lib/redux/reducers/toolarea.js b/app/lib/redux/reducers/toolarea.js index 352a51e..04654cb 100644 --- a/app/lib/redux/reducers/toolarea.js +++ b/app/lib/redux/reducers/toolarea.js @@ -1,7 +1,8 @@ const initialState = { toolAreaOpen : false, - currentToolTab : 'chat' // chat, settings, users + currentToolTab : 'chat', // chat, settings, users + unread : 0 }; const toolarea = (state = initialState, action) => @@ -11,15 +12,27 @@ const toolarea = (state = initialState, action) => case 'TOGGLE_TOOL_AREA': { const toolAreaOpen = !state.toolAreaOpen; + const unread = toolAreaOpen && state.currentToolTab === 'chat' ? 0 : state.unread; - return { ...state, toolAreaOpen }; + return { ...state, toolAreaOpen, unread }; } case 'SET_TOOL_TAB': { const { toolTab } = action.payload; + const unread = toolTab === 'chat' ? 0 : state.unread; - return { ...state, currentToolTab: toolTab }; + return { ...state, currentToolTab: toolTab, unread }; + } + + case 'ADD_NEW_RESPONSE_MESSAGE': + { + if (state.toolAreaOpen && state.currentToolTab === 'chat') + { + return state; + } + + return { ...state, unread: state.unread + 1 }; } default: