// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved. // See License.txt for license information. var PostStore = require('../stores/post_store.jsx'); var ChannelStore = require('../stores/channel_store.jsx'); var UserProfile = require( './user_profile.jsx' ); var UserStore = require('../stores/user_store.jsx'); var AppDispatcher = require('../dispatcher/app_dispatcher.jsx'); var utils = require('../utils/utils.jsx'); var SearchBox =require('./search_bar.jsx'); var CreateComment = require( './create_comment.jsx' ); var Constants = require('../utils/constants.jsx'); var FileAttachmentList = require('./file_attachment_list.jsx'); var FileUploadOverlay = require('./file_upload_overlay.jsx'); var ActionTypes = Constants.ActionTypes; RhsHeaderPost = React.createClass({ handleClose: function(e) { e.preventDefault(); AppDispatcher.handleServerAction({ type: ActionTypes.RECIEVED_SEARCH, results: null }); AppDispatcher.handleServerAction({ type: ActionTypes.RECIEVED_POST_SELECTED, results: null }); }, handleBack: function(e) { e.preventDefault(); AppDispatcher.handleServerAction({ type: ActionTypes.RECIEVED_SEARCH_TERM, term: this.props.fromSearch, do_search: true, is_mention_search: this.props.isMentionSearch }); AppDispatcher.handleServerAction({ type: ActionTypes.RECIEVED_POST_SELECTED, results: null }); }, render: function() { var back = this.props.fromSearch ? : ""; return (
{back}Message Details
); } }); RootPost = React.createClass({ render: function() { var post = this.props.post; var message = utils.textToJsx(post.message); var isOwner = UserStore.getCurrentId() == post.user_id; var timestamp = UserStore.getProfile(post.user_id).update_at; var channel = ChannelStore.get(post.channel_id); var type = "Post"; if (post.root_id.length > 0) { type = "Comment"; } var currentUserCss = ""; if (UserStore.getCurrentId() === post.user_id) { currentUserCss = "current--user"; } if (channel) { channelName = (channel.type === 'D') ? "Private Message" : channel.display_name; } return (
{ channelName }

{message}

{ post.filenames && post.filenames.length > 0 ? : "" }

); } }); CommentPost = React.createClass({ render: function() { var post = this.props.post; var commentClass = "post"; var currentUserCss = ""; if (UserStore.getCurrentId() === post.user_id) { currentUserCss = "current--user"; } var isOwner = UserStore.getCurrentId() == post.user_id; var type = "Post" if (post.root_id.length > 0) { type = "Comment" } var message = utils.textToJsx(post.message); var timestamp = UserStore.getCurrentUser().update_at; return (

{message}

{ post.filenames && post.filenames.length > 0 ? : "" }
); } }); function getStateFromStores() { return { post_list: PostStore.getSelectedPost() }; } module.exports = React.createClass({ componentDidMount: function() { PostStore.addSelectedPostChangeListener(this._onChange); PostStore.addChangeListener(this._onChangeAll); UserStore.addStatusesChangeListener(this._onTimeChange); this.resize(); var self = this; $(window).resize(function(){ self.resize(); }); }, componentDidUpdate: function() { $(".post-right__scroll").scrollTop($(".post-right__scroll")[0].scrollHeight); $(".post-right__scroll").perfectScrollbar('update'); this.resize(); }, componentWillUnmount: function() { PostStore.removeSelectedPostChangeListener(this._onChange); PostStore.removeChangeListener(this._onChangeAll); UserStore.removeStatusesChangeListener(this._onTimeChange); }, _onChange: function() { if (this.isMounted()) { var newState = getStateFromStores(); if (!utils.areStatesEqual(newState, this.state)) { this.setState(newState); } } }, _onChangeAll: function() { if (this.isMounted()) { // if something was changed in the channel like adding a // comment or post then lets refresh the sidebar list var currentSelected = PostStore.getSelectedPost(); if (!currentSelected || currentSelected.order.length == 0) { return; } var currentPosts = PostStore.getPosts(currentSelected.posts[currentSelected.order[0]].channel_id); if (!currentPosts || currentPosts.order.length == 0) { return; } if (currentPosts.posts[currentPosts.order[0]].channel_id == currentSelected.posts[currentSelected.order[0]].channel_id) { currentSelected.posts = {}; for (var postId in currentPosts.posts) { currentSelected.posts[postId] = currentPosts.posts[postId]; } PostStore.storeSelectedPost(currentSelected); } this.setState(getStateFromStores()); } }, _onTimeChange: function() { for (var id in this.state.post_list.posts) { if (!this.refs[id]) continue; this.refs[id].forceUpdate(); } }, getInitialState: function() { return getStateFromStores(); }, resize: function() { var height = $(window).height() - $('#error_bar').outerHeight() - 100; $(".post-right__scroll").css("height", height + "px"); $(".post-right__scroll").scrollTop(100000); $(".post-right__scroll").perfectScrollbar(); $(".post-right__scroll").perfectScrollbar('update'); }, render: function() { var post_list = this.state.post_list; if (post_list == null) { return (
); } var selected_post = post_list.posts[post_list.order[0]]; var root_post = null; if (selected_post.root_id == "") { root_post = selected_post; } else { root_post = post_list.posts[selected_post.root_id]; } var posts_array = []; for (var postId in post_list.posts) { var cpost = post_list.posts[postId]; if (cpost.root_id == root_post.id) { posts_array.push(cpost); } } posts_array.sort(function(a,b) { if (a.create_at < b.create_at) return -1; if (a.create_at > b.create_at) return 1; return 0; }); var results = this.state.results; var currentId = UserStore.getCurrentId(); var searchForm = currentId == null ? null : ; return (
{searchForm}
{ posts_array.map(function(cpost) { return })}
); } });