From 6c33350f5c7e58ac45d7300c035dd58ecf6b3330 Mon Sep 17 00:00:00 2001
From: Joram Wilander <jwawilander@gmail.com>
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

