// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved. // See License.txt for license information. var Client = require('../utils/client.jsx'); var PostStore = require('../stores/post_store.jsx'); var utils = require('../utils/utils.jsx'); var AsyncClient = require('../utils/async_client.jsx'); var AppDispatcher = require('../dispatcher/app_dispatcher.jsx'); var Constants = require('../utils/constants.jsx'); var ActionTypes = Constants.ActionTypes; module.exports = React.createClass({ handleDelete: function(e) { Client.deletePost(this.state.channel_id, this.state.post_id, function(data) { var selected_list = this.state.selectedList; if (selected_list && selected_list.order && selected_list.order.length > 0) { var selected_post = selected_list.posts[selected_list.order[0]]; if ((selected_post.id === this.state.post_id && this.state.title === "Post") || selected_post.root_id === this.state.post_id) { AppDispatcher.handleServerAction({ type: ActionTypes.RECIEVED_SEARCH, results: null }); AppDispatcher.handleServerAction({ type: ActionTypes.RECIEVED_POST_SELECTED, results: null }); } else if (selected_post.id === this.state.post_id && this.state.title === "Comment") { if (selected_post.root_id && selected_post.root_id.length > 0 && selected_list.posts[selected_post.root_id]) { selected_list.order = [selected_post.root_id]; delete selected_list.posts[selected_post.id]; AppDispatcher.handleServerAction({ type: ActionTypes.RECIEVED_POST_SELECTED, post_list: selected_list }); AppDispatcher.handleServerAction({ type: ActionTypes.RECIEVED_SEARCH, results: null }); } } } AsyncClient.getPosts(true, this.state.channel_id); }.bind(this), function(err) { AsyncClient.dispatchError(err, "deletePost"); }.bind(this) ); }, componentDidMount: function() { var self = this; $(this.refs.modal.getDOMNode()).on('show.bs.modal', function(e) { var newState = {}; if(sessionStorage.getItem('edit_state_transfer')) { newState = JSON.parse(sessionStorage.getItem('edit_state_transfer')); sessionStorage.removeItem('edit_state_transfer'); } else { var button = e.relatedTarget; newState = { title: $(button).attr('data-title'), channel_id: $(button).attr('data-channelid'), post_id: $(button).attr('data-postid'), comments: $(button).attr('data-comments') }; } self.setState(newState) }); PostStore.addSelectedPostChangeListener(this._onChange); }, componentWillUnmount: function() { PostStore.removeSelectedPostChangeListener(this._onChange); }, _onChange: function() { var newList = PostStore.getSelectedPost(); if (!utils.areStatesEqual(this.state.selectedList, newList)) { this.setState({ selectedList: newList }); } }, getInitialState: function() { return { title: "", post_id: "", channel_id: "", selectedList: PostStore.getSelectedPost(), comments: 0 }; }, render: function() { var error = this.state.error ?
: null; return ( ); } });