From 6c33350f5c7e58ac45d7300c035dd58ecf6b3330 Mon Sep 17 00:00:00 2001 From: Joram Wilander Date: Wed, 6 Jul 2016 08:48:00 -0400 Subject: On receive of a comment that we don't have the thread for, acquire the thread (#3490) --- webapp/actions/post_actions.jsx | 64 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 webapp/actions/post_actions.jsx (limited to 'webapp/actions/post_actions.jsx') diff --git a/webapp/actions/post_actions.jsx b/webapp/actions/post_actions.jsx new file mode 100644 index 000000000..2b55e31ef --- /dev/null +++ b/webapp/actions/post_actions.jsx @@ -0,0 +1,64 @@ +// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +import AppDispatcher from 'dispatcher/app_dispatcher.jsx'; + +import ChannelStore from 'stores/channel_store.jsx'; +import PostStore from 'stores/post_store.jsx'; +import TeamStore from 'stores/team_store.jsx'; + +import Constants from 'utils/constants.jsx'; +const ActionTypes = Constants.ActionTypes; + +import Client from 'utils/web_client.jsx'; +import * as AsyncClient from 'utils/async_client.jsx'; + +export function handleNewPost(post, msg) { + if (ChannelStore.getCurrentId() === post.channel_id) { + if (window.isActive) { + AsyncClient.updateLastViewedAt(); + } else { + AsyncClient.getChannel(post.channel_id); + } + } else if (msg && (TeamStore.getCurrentId() === msg.team_id || msg.props.channel_type === Constants.DM_CHANNEL)) { + AsyncClient.getChannel(post.channel_id); + } + + var websocketMessageProps = null; + if (msg) { + websocketMessageProps = msg.props; + } + + if (post.root_id && PostStore.getPost(post.channel_id, post.root_id) == null) { + Client.getPost( + post.channel_id, + post.root_id, + (data) => { + AppDispatcher.handleServerAction({ + type: ActionTypes.RECEIVED_POSTS, + id: post.channel_id, + numRequested: 0, + post_list: data + }); + + // Required to update order + AppDispatcher.handleServerAction({ + type: ActionTypes.RECEIVED_POST, + post, + websocketMessageProps + }); + }, + (err) => { + AsyncClient.dispatchError(err, 'getPost'); + } + ); + + return; + } + + AppDispatcher.handleServerAction({ + type: ActionTypes.RECEIVED_POST, + post, + websocketMessageProps + }); +} -- cgit v1.2.3-1-g7c22