From 7bcea832cdd2391369c66a831d43036ebd82bdea Mon Sep 17 00:00:00 2001 From: Debanshu Kundu Date: Wed, 25 Jan 2017 17:48:35 +0530 Subject: #4967 Fixed issue of post not getting updated after edit, if the post was focused. (#5149) --- webapp/actions/post_actions.jsx | 22 ++++++++++++++-------- webapp/components/edit_post_modal.jsx | 9 +++++++-- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/webapp/actions/post_actions.jsx b/webapp/actions/post_actions.jsx index 7179b6365..3f660b94d 100644 --- a/webapp/actions/post_actions.jsx +++ b/webapp/actions/post_actions.jsx @@ -115,12 +115,16 @@ export function getFlaggedPosts() { ); } -export function loadPosts(channelId = ChannelStore.getCurrentId()) { +export function loadPosts(channelId = ChannelStore.getCurrentId(), isPost = false) { const postList = PostStore.getAllPosts(channelId); const latestPostTime = PostStore.getLatestPostFromPageTime(channelId); - if (!postList || Object.keys(postList).length === 0 || postList.order.length < Constants.POST_CHUNK_SIZE || latestPostTime === 0) { - loadPostsPage(channelId, Constants.POST_CHUNK_SIZE); + if ( + !postList || Object.keys(postList).length === 0 || + (!isPost && postList.order.length < Constants.POST_CHUNK_SIZE) || + latestPostTime === 0 + ) { + loadPostsPage(channelId, Constants.POST_CHUNK_SIZE, isPost); return; } @@ -133,7 +137,8 @@ export function loadPosts(channelId = ChannelStore.getCurrentId()) { id: channelId, before: true, numRequested: 0, - post_list: data + post_list: data, + isPost }); loadProfilesForPosts(data.posts); @@ -145,7 +150,7 @@ export function loadPosts(channelId = ChannelStore.getCurrentId()) { ); } -export function loadPostsPage(channelId = ChannelStore.getCurrentId(), max = Constants.POST_CHUNK_SIZE) { +export function loadPostsPage(channelId = ChannelStore.getCurrentId(), max = Constants.POST_CHUNK_SIZE, isPost = false) { const postList = PostStore.getAllPosts(channelId); // if we already have more than POST_CHUNK_SIZE posts, @@ -168,7 +173,8 @@ export function loadPostsPage(channelId = ChannelStore.getCurrentId(), max = Con numRequested: numPosts, checkLatest: true, checkEarliest: true, - post_list: data + post_list: data, + isPost }); loadProfilesForPosts(data.posts); @@ -365,11 +371,11 @@ export function createPost(post, doLoadPost, success, error) { ); } -export function updatePost(post, success) { +export function updatePost(post, success, isPost) { Client.updatePost( post, () => { - loadPosts(post.channel_id); + loadPosts(post.channel_id, isPost); if (success) { success(); diff --git a/webapp/components/edit_post_modal.jsx b/webapp/components/edit_post_modal.jsx index 7c1747ef7..b2b607428 100644 --- a/webapp/components/edit_post_modal.jsx +++ b/webapp/components/edit_post_modal.jsx @@ -93,7 +93,9 @@ export default class EditPostModal extends React.Component { updatedPost, () => { window.scrollTo(0, 0); - }); + }, + Boolean(PostStore.getFocusedPostId()) // If there is focused post we need to update that post's store too. + ); $('#edit_post').modal('hide'); } @@ -184,7 +186,10 @@ export default class EditPostModal extends React.Component { onModalHide() { if (this.state.refocusId !== '') { setTimeout(() => { - $(this.state.refocusId).get(0).focus(); + const element = $(this.state.refocusId).get(0); + if (element) { + element.focus(); + } }); } } -- cgit v1.2.3-1-g7c22