summaryrefslogtreecommitdiffstats
path: root/web/react/components/create_post.jsx
diff options
context:
space:
mode:
authorJoramWilander <jwawilander@gmail.com>2015-08-12 12:45:15 -0400
committerJoramWilander <jwawilander@gmail.com>2015-08-18 08:59:26 -0400
commitfa1491bbfbb1261757943759edf44883d31e5477 (patch)
treeac5474908c28abf741371602603e22669cb4197e /web/react/components/create_post.jsx
parentc77f6041889b2dd8c6e830b8c2f42ab9c1340849 (diff)
downloadchat-fa1491bbfbb1261757943759edf44883d31e5477.tar.gz
chat-fa1491bbfbb1261757943759edf44883d31e5477.tar.bz2
chat-fa1491bbfbb1261757943759edf44883d31e5477.zip
finalize implenetation of predictive client posts so that users get immediate feedback after posting
Diffstat (limited to 'web/react/components/create_post.jsx')
-rw-r--r--web/react/components/create_post.jsx53
1 files changed, 29 insertions, 24 deletions
diff --git a/web/react/components/create_post.jsx b/web/react/components/create_post.jsx
index 8110f5886..8e9e95751 100644
--- a/web/react/components/create_post.jsx
+++ b/web/react/components/create_post.jsx
@@ -66,33 +66,44 @@ module.exports = React.createClass({
post.filenames = this.state.previews;
var time = utils.getTimestamp();
- post.pending_post_id = user_id + ":"+ time;
- post.user_id = user_id;
+ 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.getCurrent();
+ var channel = ChannelStore.get(this.state.channelId);
+
+ PostStore.storePendingPost(post);
+ PostStore.storeDraft(channel.id, userId, null);
+ this.setState({messageText: '', submitting: false, postError: null, previews: [], serverError: null});
client.createPost(post, channel,
function(data) {
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 = {}
+ var state = {};
- if (err.message === "Invalid RootId parameter") {
- if ($('#post_deleted').length > 0) $('#post_deleted').modal('show');
+ if (err.message === 'Invalid RootId parameter') {
+ if ($('#post_deleted').length > 0) {
+ $('#post_deleted').modal('show');
+ }
PostStore.removePendingPost(post.pending_post_id);
} else {
- post.did_fail = true;
+ post.state = Constants.POST_FAILED;
PostStore.updatePendingPost(post);
}
@@ -100,11 +111,6 @@ module.exports = React.createClass({
this.setState(state);
}.bind(this)
);
-
- post.is_loading = true;
- PostStore.storePendingPost(post);
- PostStore.storeDraft(channel.id, user_id, null);
- this.setState({messageText: '', submitting: false, postError: null, previews: [], serverError: null});
}
$('.post-list-holder-by-time').perfectScrollbar('update');
@@ -218,10 +224,10 @@ module.exports = React.createClass({
var previews = [];
var messageText = '';
var uploadsInProgress = 0;
- if (draft && draft['previews'] && draft['message']) {
- previews = draft['previews'];
- messageText = draft['message'];
- uploadsInProgress = draft['uploadsInProgress'];
+ 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});
@@ -229,19 +235,18 @@ module.exports = React.createClass({
},
getInitialState: function() {
PostStore.clearDraftUploads();
- PostStore.clearPendingPosts(ChannelStore.getCurrentId());
var draft = PostStore.getCurrentDraft();
var previews = [];
var messageText = '';
var uploadsInProgress = 0;
- if (draft && draft["previews"] && draft["message"]) {
- previews = draft['previews'];
- messageText = draft['message'];
- uploadsInProgress = draft['uploadsInProgress'];
+ 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};
+ return {channelId: ChannelStore.getCurrentId(), messageText: messageText, uploadsInProgress: uploadsInProgress, previews: previews, submitting: false, initialText: messageText};
},
getFileCount: function(channelId) {
if (channelId === this.state.channelId) {