summaryrefslogtreecommitdiffstats
path: root/web/react/components/rhs_comment.jsx
diff options
context:
space:
mode:
Diffstat (limited to 'web/react/components/rhs_comment.jsx')
-rw-r--r--web/react/components/rhs_comment.jsx306
1 files changed, 0 insertions, 306 deletions
diff --git a/web/react/components/rhs_comment.jsx b/web/react/components/rhs_comment.jsx
deleted file mode 100644
index 9183b761f..000000000
--- a/web/react/components/rhs_comment.jsx
+++ /dev/null
@@ -1,306 +0,0 @@
-// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
-// See License.txt for license information.
-
-import PostStore from '../stores/post_store.jsx';
-import ChannelStore from '../stores/channel_store.jsx';
-import UserProfile from './user_profile.jsx';
-import UserStore from '../stores/user_store.jsx';
-import AppDispatcher from '../dispatcher/app_dispatcher.jsx';
-import * as Utils from '../utils/utils.jsx';
-import Constants from '../utils/constants.jsx';
-import FileAttachmentList from './file_attachment_list.jsx';
-import * as Client from '../utils/client.jsx';
-import * as AsyncClient from '../utils/async_client.jsx';
-var ActionTypes = Constants.ActionTypes;
-import * as TextFormatting from '../utils/text_formatting.jsx';
-import twemoji from 'twemoji';
-import * as GlobalActions from '../action_creators/global_actions.jsx';
-
-import {intlShape, injectIntl, defineMessages, FormattedMessage, FormattedDate} from 'mm-intl';
-
-const holders = defineMessages({
- comment: {
- id: 'rhs_comment.comment',
- defaultMessage: 'Comment'
- }
-});
-
-class RhsComment extends React.Component {
- constructor(props) {
- super(props);
-
- this.retryComment = this.retryComment.bind(this);
- this.parseEmojis = this.parseEmojis.bind(this);
- this.handlePermalink = this.handlePermalink.bind(this);
-
- this.state = {};
- }
- retryComment(e) {
- e.preventDefault();
-
- var post = this.props.post;
- Client.createPost(post, post.channel_id,
- (data) => {
- AsyncClient.getPosts(post.channel_id);
-
- var channel = ChannelStore.get(post.channel_id);
- var member = ChannelStore.getMember(post.channel_id);
- member.msg_count = channel.total_msg_count;
- member.last_viewed_at = (new Date()).getTime();
- ChannelStore.setChannelMember(member);
-
- AppDispatcher.handleServerAction({
- type: ActionTypes.RECEIVED_POST,
- post: data
- });
- },
- () => {
- post.state = Constants.POST_FAILED;
- PostStore.updatePendingPost(post);
- this.forceUpdate();
- }
- );
-
- post.state = Constants.POST_LOADING;
- PostStore.updatePendingPost(post);
- this.forceUpdate();
- }
- parseEmojis() {
- twemoji.parse(ReactDOM.findDOMNode(this), {size: Constants.EMOJI_SIZE});
- }
- handlePermalink(e) {
- e.preventDefault();
- GlobalActions.showGetPostLinkModal(this.props.post);
- }
- componentDidMount() {
- this.parseEmojis();
- }
- shouldComponentUpdate(nextProps) {
- if (!Utils.areObjectsEqual(nextProps.post, this.props.post)) {
- return true;
- }
-
- return false;
- }
- componentDidUpdate() {
- this.parseEmojis();
- }
- createDropdown() {
- var post = this.props.post;
-
- if (post.state === Constants.POST_FAILED || post.state === Constants.POST_LOADING || post.state === Constants.POST_DELETED) {
- return '';
- }
-
- var isOwner = UserStore.getCurrentId() === post.user_id;
- var isAdmin = Utils.isAdmin(UserStore.getCurrentUser().roles);
-
- var dropdownContents = [];
-
- if (!Utils.isMobile()) {
- dropdownContents.push(
- <li
- key='rhs-root-permalink'
- role='presentation'
- >
- <a
- href='#'
- onClick={this.handlePermalink}
- >
- <FormattedMessage
- id='rhs_comment.permalink'
- defaultMessage='Permalink'
- />
- </a>
- </li>
- );
- }
-
- if (isOwner) {
- dropdownContents.push(
- <li
- role='presentation'
- key='edit-button'
- >
- <a
- href='#'
- role='menuitem'
- data-toggle='modal'
- data-target='#edit_post'
- data-refocusid='#reply_textbox'
- data-title={this.props.intl.formatMessage(holders.comment)}
- data-message={post.message}
- data-postid={post.id}
- data-channelid={post.channel_id}
- >
- <FormattedMessage
- id='rhs_comment.edit'
- defaultMessage='Edit'
- />
- </a>
- </li>
- );
- }
-
- if (isOwner || isAdmin) {
- dropdownContents.push(
- <li
- role='presentation'
- key='delete-button'
- >
- <a
- href='#'
- role='menuitem'
- onClick={() => GlobalActions.showDeletePostModal(post, 0)}
- >
- <FormattedMessage
- id='rhs_comment.del'
- defaultMessage='Delete'
- />
- </a>
- </li>
- );
- }
-
- if (dropdownContents.length === 0) {
- return '';
- }
-
- return (
- <div className='dropdown'>
- <a
- href='#'
- className='post__dropdown dropdown-toggle'
- type='button'
- data-toggle='dropdown'
- aria-expanded='false'
- />
- <ul
- className='dropdown-menu'
- role='menu'
- >
- {dropdownContents}
- </ul>
- </div>
- );
- }
- render() {
- var post = this.props.post;
-
- var currentUserCss = '';
- if (UserStore.getCurrentId() === post.user_id) {
- currentUserCss = 'current--user';
- }
-
- var timestamp = UserStore.getCurrentUser().update_at;
-
- let loading;
- let postClass = '';
- let message = (
- <div
- ref='message_holder'
- onClick={TextFormatting.handleClick}
- dangerouslySetInnerHTML={{__html: TextFormatting.formatText(post.message)}}
- />
- );
-
- if (post.state === Constants.POST_FAILED) {
- postClass += ' post-fail';
- loading = (
- <a
- className='theme post-retry pull-right'
- href='#'
- onClick={this.retryComment}
- >
- <FormattedMessage
- id='rhs_comment.retry'
- defaultMessage='Retry'
- />
- </a>
- );
- } else if (post.state === Constants.POST_LOADING) {
- postClass += ' post-waiting';
- loading = (
- <img
- className='post-loading-gif pull-right'
- src='/static/images/load.gif'
- />
- );
- } else if (this.props.post.state === Constants.POST_DELETED) {
- message = (
- <FormattedMessage
- id='post_body.deleted'
- defaultMessage='(message deleted)'
- />
- );
- }
-
- var dropdown = this.createDropdown();
-
- var fileAttachment;
- if (post.filenames && post.filenames.length > 0) {
- fileAttachment = (
- <FileAttachmentList
- filenames={post.filenames}
- channelId={post.channel_id}
- userId={post.user_id}
- />
- );
- }
-
- return (
- <div className={'post ' + currentUserCss}>
- <div className='post__content'>
- <div className='post__img'>
- <img
- src={'/api/v1/users/' + post.user_id + '/image?time=' + timestamp}
- height='36'
- width='36'
- />
- </div>
- <div>
- <ul className='post__header'>
- <li className='col__name'>
- <strong><UserProfile user={this.props.user}/></strong>
- </li>
- <li className='col'>
- <time className='post__time'>
- <FormattedDate
- value={post.create_at}
- day='numeric'
- month='long'
- year='numeric'
- hour12={true}
- hour='2-digit'
- minute='2-digit'
- />
- </time>
- </li>
- <li className='col col__reply'>
- {dropdown}
- </li>
- </ul>
- <div className='post__body'>
- <div className={postClass}>
- {loading}
- {message}
- </div>
- {fileAttachment}
- </div>
- </div>
- </div>
- </div>
- );
- }
-}
-
-RhsComment.defaultProps = {
- post: null
-};
-RhsComment.propTypes = {
- intl: intlShape.isRequired,
- post: React.PropTypes.object,
- user: React.PropTypes.object
-};
-
-export default injectIntl(RhsComment);