summaryrefslogtreecommitdiffstats
path: root/web/react/components/create_post.jsx
diff options
context:
space:
mode:
authorChristopher Speller <crspeller@gmail.com>2015-08-18 09:19:29 -0400
committerChristopher Speller <crspeller@gmail.com>2015-08-18 09:19:29 -0400
commit532be141bae8ff2ea03de4fa54affd6e72dab9ea (patch)
treefb0f76405960217477f4f91212da395543b84657 /web/react/components/create_post.jsx
parent4805608cc9cf79277f37b94bbe38398816469884 (diff)
parentf4c2a9244c72786cc9a90597d9cb373e0cfee4c7 (diff)
downloadchat-532be141bae8ff2ea03de4fa54affd6e72dab9ea.tar.gz
chat-532be141bae8ff2ea03de4fa54affd6e72dab9ea.tar.bz2
chat-532be141bae8ff2ea03de4fa54affd6e72dab9ea.zip
Merge pull request #380 from mattermost/mm-319
MM-319 adding pending post functionality to the client
Diffstat (limited to 'web/react/components/create_post.jsx')
-rw-r--r--web/react/components/create_post.jsx66
1 files changed, 52 insertions, 14 deletions
diff --git a/web/react/components/create_post.jsx b/web/react/components/create_post.jsx
index 377e7bd34..3714560ea 100644
--- a/web/react/components/create_post.jsx
+++ b/web/react/components/create_post.jsx
@@ -65,22 +65,47 @@ module.exports = React.createClass({
post.channel_id = this.state.channelId;
post.filenames = this.state.previews;
- client.createPost(post, ChannelStore.getCurrent(),
+ var time = utils.getTimestamp();
+ var userId = UserStore.getCurrentId();
+ post.pending_post_id = userId + ':' + time;
+ post.user_id = userId;
+ post.create_at = time;
+ post.root_id = this.state.rootId;
+ post.parent_id = this.state.parentId;
+
+ var channel = ChannelStore.get(this.state.channelId);
+
+ PostStore.storePendingPost(post);
+ PostStore.storeDraft(channel.id, null);
+ this.setState({messageText: '', submitting: false, postError: null, previews: [], serverError: null});
+
+ client.createPost(post, channel,
function(data) {
- PostStore.storeDraft(data.channel_id, null);
- this.setState({messageText: '', submitting: false, postError: null, previews: [], serverError: null});
this.resizePostHolder();
AsyncClient.getPosts(true);
- var channel = ChannelStore.get(this.state.channelId);
- var member = ChannelStore.getMember(this.state.channelId);
+ var member = ChannelStore.getMember(channel.id);
member.msg_count = channel.total_msg_count;
member.last_viewed_at = Date.now();
ChannelStore.setChannelMember(member);
+
+ AppDispatcher.handleServerAction({
+ type: ActionTypes.RECIEVED_POST,
+ post: data
+ });
}.bind(this),
function(err) {
var state = {};
- state.serverError = err.message;
+
+ if (err.message === 'Invalid RootId parameter') {
+ if ($('#post_deleted').length > 0) {
+ $('#post_deleted').modal('show');
+ }
+ PostStore.removePendingPost(post.pending_post_id);
+ } else {
+ post.state = Constants.POST_FAILED;
+ PostStore.updatePendingPost(post);
+ }
state.submitting = false;
this.setState(state);
@@ -195,20 +220,33 @@ module.exports = React.createClass({
var channelId = ChannelStore.getCurrentId();
if (this.state.channelId !== channelId) {
var draft = PostStore.getCurrentDraft();
- this.setState({
- channelId: channelId, messageText: draft['message'], initialText: draft['message'], submitting: false,
- serverError: null, postError: null, previews: draft['previews'], uploadsInProgress: draft['uploadsInProgress']
- });
+
+ var previews = [];
+ var messageText = '';
+ var uploadsInProgress = 0;
+ if (draft && draft.previews && draft.message) {
+ previews = draft.previews;
+ messageText = draft.message;
+ uploadsInProgress = draft.uploadsInProgress;
+ }
+
+ this.setState({channelId: channelId, messageText: messageText, initialText: messageText, submitting: false, serverError: null, postError: null, previews: previews, uploadsInProgress: uploadsInProgress});
}
},
getInitialState: function() {
PostStore.clearDraftUploads();
var draft = PostStore.getCurrentDraft();
- return {
- channelId: ChannelStore.getCurrentId(), messageText: draft['message'], uploadsInProgress: draft['uploadsInProgress'],
- previews: draft['previews'], submitting: false, initialText: draft['message']
- };
+ var previews = [];
+ var messageText = '';
+ var uploadsInProgress = 0;
+ if (draft && draft.previews && draft.message) {
+ previews = draft.previews;
+ messageText = draft.message;
+ uploadsInProgress = draft.uploadsInProgress;
+ }
+
+ return {channelId: ChannelStore.getCurrentId(), messageText: messageText, uploadsInProgress: uploadsInProgress, previews: previews, submitting: false, initialText: messageText};
},
getFileCount: function(channelId) {
if (channelId === this.state.channelId) {