Added chat badge displaying unread messages
This commit is contained in:
@@ -7,6 +7,13 @@ import MessageList from './Chat/MessageList';
|
||||
|
||||
class ChatWidget extends Component
|
||||
{
|
||||
componentWillReceiveProps(nextProps)
|
||||
{
|
||||
if (nextProps.chatmessages.length !== this.props.chatmessages.length)
|
||||
if (!this.props.showChat)
|
||||
this.props.increaseBadge();
|
||||
}
|
||||
|
||||
render()
|
||||
{
|
||||
const {
|
||||
@@ -68,15 +75,15 @@ ChatWidget.propTypes =
|
||||
disabledInput : PropTypes.bool,
|
||||
badge : PropTypes.number,
|
||||
autofocus : PropTypes.bool,
|
||||
displayName : PropTypes.string
|
||||
displayName : PropTypes.string,
|
||||
chatmessages : PropTypes.arrayOf(PropTypes.object),
|
||||
increaseBadge : PropTypes.func
|
||||
};
|
||||
|
||||
ChatWidget.defaultProps =
|
||||
{
|
||||
senderPlaceHolder : 'Type a message...',
|
||||
badge : 0,
|
||||
autofocus : true,
|
||||
displayName : null
|
||||
autofocus : true
|
||||
};
|
||||
|
||||
const mapStateToProps = (state) =>
|
||||
@@ -84,7 +91,9 @@ const mapStateToProps = (state) =>
|
||||
return {
|
||||
showChat : state.chatbehavior.showChat,
|
||||
disabledInput : state.chatbehavior.disabledInput,
|
||||
displayName : state.me.displayName
|
||||
displayName : state.me.displayName,
|
||||
badge : state.chatbehavior.badge,
|
||||
chatmessages : state.chatmessages
|
||||
};
|
||||
};
|
||||
|
||||
@@ -106,6 +115,10 @@ const mapDispatchToProps = (dispatch) =>
|
||||
dispatch(requestActions.sendChatMessage(userInput, displayName));
|
||||
}
|
||||
event.target.message.value = '';
|
||||
},
|
||||
increaseBadge : () =>
|
||||
{
|
||||
dispatch(stateActions.increaseBadge());
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
@@ -12,8 +12,9 @@ const chatbehavior = (state = initialState, action) =>
|
||||
case 'TOGGLE_CHAT':
|
||||
{
|
||||
const showChat = !state.showChat;
|
||||
const badge = 0;
|
||||
|
||||
return { ...state, showChat };
|
||||
return { ...state, showChat, badge };
|
||||
}
|
||||
|
||||
case 'TOGGLE_INPUT_DISABLED':
|
||||
@@ -23,6 +24,10 @@ const chatbehavior = (state = initialState, action) =>
|
||||
return { ...state, disabledInput };
|
||||
}
|
||||
|
||||
case 'INCREASE_BADGE':
|
||||
{
|
||||
return { ...state, badge: state.badge + (state.showChat ? 0 : 1) };
|
||||
}
|
||||
default:
|
||||
return state;
|
||||
}
|
||||
|
||||
@@ -338,6 +338,13 @@ export const toggleChat = () =>
|
||||
};
|
||||
};
|
||||
|
||||
export const increaseBadge = () =>
|
||||
{
|
||||
return {
|
||||
type : 'INCREASE_BADGE'
|
||||
};
|
||||
};
|
||||
|
||||
export const toggleInputDisabled = () =>
|
||||
{
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user