diff options
author | Joram Wilander <jwawilander@gmail.com> | 2017-06-18 14:42:32 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-18 14:42:32 -0400 |
commit | ab67f6e257f6e8f08145a02a7b93550f99641be4 (patch) | |
tree | d33d1c58a3d229f7e37db58bc2c397ac3806c503 /webapp/components/post_view/commented_on_files_message | |
parent | 0231e95f1c5a8c42ba97875f0d2301815f552974 (diff) | |
download | chat-ab67f6e257f6e8f08145a02a7b93550f99641be4.tar.gz chat-ab67f6e257f6e8f08145a02a7b93550f99641be4.tar.bz2 chat-ab67f6e257f6e8f08145a02a7b93550f99641be4.zip |
PLT-6215 Major post list refactor (#6501)
* Major post list refactor
* Fix post and thread deletion
* Fix preferences not selecting correctly
* Fix military time displaying
* Fix UP key for editing posts
* Fix ESLint error
* Various fixes and updates per feedback
* Fix for permalink view
* Revert to old scrolling method and various fixes
* Add floating timestamp, new message indicator, scroll arrows
* Update post loading for focus mode and add visibility limit
* Fix pinning posts and a react warning
* Add loading UI updates from Asaad
* Fix refreshing loop
* Temporarily bump post visibility limit
* Update infinite scrolling
* Remove infinite scrolling
Diffstat (limited to 'webapp/components/post_view/commented_on_files_message')
-rw-r--r-- | webapp/components/post_view/commented_on_files_message/commented_on_files_message.jsx | 51 | ||||
-rw-r--r-- | webapp/components/post_view/commented_on_files_message/index.js | 36 |
2 files changed, 87 insertions, 0 deletions
diff --git a/webapp/components/post_view/commented_on_files_message/commented_on_files_message.jsx b/webapp/components/post_view/commented_on_files_message/commented_on_files_message.jsx new file mode 100644 index 000000000..a09b2b156 --- /dev/null +++ b/webapp/components/post_view/commented_on_files_message/commented_on_files_message.jsx @@ -0,0 +1,51 @@ +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +import React from 'react'; + +import * as Utils from 'utils/utils.jsx'; + +export default class CommentedOnFilesMessage extends React.PureComponent { + static propTypes = { + + /* + * The id of the post that was commented on + */ + parentPostId: React.PropTypes.string.isRequired, + + /* + * An array of file metadata for the parent post + */ + fileInfos: React.PropTypes.arrayOf(React.PropTypes.object), + + actions: React.PropTypes.shape({ + + /* + * Function to get file metadata for a post + */ + getFilesForPost: React.PropTypes.func.isRequired + }).isRequired + } + + componentDidMount() { + if (!this.props.fileInfos || this.props.fileInfos.length === 0) { + this.props.actions.getFilesForPost(this.props.parentPostId); + } + } + + render() { + let message = ' '; + + if (this.props.fileInfos && this.props.fileInfos.length > 0) { + message = this.props.fileInfos[0].name; + + if (this.props.fileInfos.length === 2) { + message += Utils.localizeMessage('post_body.plusOne', ' plus 1 other file'); + } else if (this.props.fileInfos.length > 2) { + message += Utils.localizeMessage('post_body.plusMore', ' plus {count} other files').replace('{count}', (this.props.fileInfos.length - 1).toString()); + } + } + + return <span>{message}</span>; + } +} diff --git a/webapp/components/post_view/commented_on_files_message/index.js b/webapp/components/post_view/commented_on_files_message/index.js new file mode 100644 index 000000000..fd6aa7193 --- /dev/null +++ b/webapp/components/post_view/commented_on_files_message/index.js @@ -0,0 +1,36 @@ +// Copyright (c) 2017 Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +import {connect} from 'react-redux'; +import {bindActionCreators} from 'redux'; +import {getFilesForPost} from 'mattermost-redux/actions/files'; + +import {makeGetFilesForPost} from 'mattermost-redux/selectors/entities/files'; + +import CommentedOnFilesMessage from './commented_on_files_message.jsx'; + +function makeMapStateToProps() { + const selectFileInfosForPost = makeGetFilesForPost(); + + return function mapStateToProps(state, ownProps) { + let fileInfos; + if (ownProps.parentPostId) { + fileInfos = selectFileInfosForPost(state, {id: ownProps.parentPostId}); + } + + return { + ...ownProps, + fileInfos + }; + }; +} + +function mapDispatchToProps(dispatch) { + return { + actions: bindActionCreators({ + getFilesForPost + }, dispatch) + }; +} + +export default connect(makeMapStateToProps, mapDispatchToProps)(CommentedOnFilesMessage); |