hunk.code_window:     case ActionTypes.CLICK_CHANNEL:
           PostStore.clearFocusedPost();
           PostStore.clearChannelVisibility(action.id, true);
           PostStore.clearUnseenDeletedPosts(action.id);
           break;
       case ActionTypes.CREATE_POST:
           PostStore.storePendingPost(action.post);
           PostStore.storeDraft(action.post.channel_id, null);
           PostStore.jumpPostsViewToBottom();
  
hunk.labels: keep keep keep replace keep keep keep keep keep
hunk.after_edit:         PostStore.clearUnseenDeletedPosts(action.prev);
  
hunk.file_path: web/react/stores/post_store.jsx
hunk.type: replace
file: // Copyright (c) 2015 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 SearchStore from '../stores/search_store.jsx';
  import Constants from '../utils/constants.jsx';
  const ActionTypes = Constants.ActionTypes;
  import * as AsyncClient from '../utils/async_client.jsx';
  import * as Client from '../utils/client.jsx';
  
  export function emitChannelClickEvent(channel) {
      AsyncClient.getChannels(true);
      AsyncClient.getChannelExtraInfo(channel.id);
      AsyncClient.updateLastViewedAt(channel.id);
      AsyncClient.getPosts(channel.id);
  
      AppDispatcher.handleViewAction({
          type: ActionTypes.CLICK_CHANNEL,
          name: channel.name,
          id: channel.id
      });
  }
  
  export function emitPostFocusEvent(postId) {
      Client.getPostById(
          postId,
          (data) => {
              AppDispatcher.handleServerAction({
                  type: ActionTypes.RECIEVED_FOCUSED_POST,
                  postId,
                  post_list: data
              });
  
              AsyncClient.getPostsBefore(postId, 0, Constants.POST_FOCUS_CONTEXT_RADIUS);
              AsyncClient.getPostsAfter(postId, 0, Constants.POST_FOCUS_CONTEXT_RADIUS);
          }
      );
  }
  
  export function emitPostFocusRightHandSideFromSearch(post, isMentionSearch) {
      Client.getPost(
          post.channel_id,
          post.id,
          (data) => {
              AppDispatcher.handleServerAction({
                  type: ActionTypes.RECIEVED_POST_SELECTED,
                  post_list: data,
                  from_search: SearchStore.getSearchTerm()
              });
  
              AppDispatcher.handleServerAction({
                  type: ActionTypes.RECIEVED_SEARCH,
                  results: null,
                  is_mention_search: isMentionSearch
              });
          },
          (err) => {
              AsyncClient.dispatchError(err, 'getPost');
          }
      );
  }
  
  export function emitLoadMorePostsEvent() {
      const id = ChannelStore.getCurrentId();
      loadMorePostsTop(id);
  }
  
  export function emitLoadMorePostsFocusedTopEvent() {
      const id = PostStore.getFocusedPostId();
      loadMorePostsTop(id);
  }
  
  export function loadMorePostsTop(id) {
      const earliestPostId = PostStore.getEarliestPost(id).id;
      if (PostStore.requestVisibilityIncrease(id, Constants.POST_CHUNK_SIZE)) {
          AsyncClient.getPostsBefore(earliestPostId, 0, Constants.POST_CHUNK_SIZE);
      }
  }
  
  export function emitLoadMorePostsFocusedBottomEvent() {
      const id = PostStore.getFocusedPostId();
      const latestPostId = PostStore.getLatestPost(id).id;
      AsyncClient.getPostsAfter(latestPostId, 0, Constants.POST_CHUNK_SIZE);
  }
  
  export function emitPostRecievedEvent(post) {
      AppDispatcher.handleServerAction({
          type: ActionTypes.RECIEVED_POST,
          post
      });
  }
  
  export function emitUserPostedEvent(post) {
      AppDispatcher.handleServerAction({
          type: ActionTypes.CREATE_POST,
          post
      });
  }
  
  export function emitPostDeletedEvent(post) {
      AppDispatcher.handleServerAction({
          type: ActionTypes.POST_DELETED,
          post
      });
  }
  
  export function showDeletePostModal(post, commentCount = 0) {
      AppDispatcher.handleViewAction({
          type: ActionTypes.TOGGLE_DELETE_POST_MODAL,
          value: true,
          post,
          commentCount
      });
  }
  
  export function showGetTeamInviteLinkModal() {
      AppDispatcher.handleViewAction({
          type: Constants.ActionTypes.TOGGLE_GET_TEAM_INVITE_LINK_MODAL,
          value: true
      });
  }
  
  export function showInviteMemberModal() {
      AppDispatcher.handleViewAction({
          type: ActionTypes.TOGGLE_INVITE_MEMBER_MODAL,
          value: true
      });
  }
  
  export function showRegisterAppModal() {
      AppDispatcher.handleViewAction({
          type: ActionTypes.TOGGLE_REGISTER_APP_MODAL,
          value: true
      });
  }
  
  export function emitSuggestionPretextChanged(suggestionId, pretext) {
      AppDispatcher.handleViewAction({
          type: ActionTypes.SUGGESTION_PRETEXT_CHANGED,
          id: suggestionId,
          pretext
      });
  }
  
  export function emitSelectNextSuggestion(suggestionId) {
      AppDispatcher.handleViewAction({
          type: ActionTypes.SUGGESTION_SELECT_NEXT,
          id: suggestionId
      });
  }
  
  export function emitSelectPreviousSuggestion(suggestionId) {
      AppDispatcher.handleViewAction({
          type: ActionTypes.SUGGESTION_SELECT_PREVIOUS,
          id: suggestionId
      });
  }
  
  export function emitCompleteWordSuggestion(suggestionId, term = '') {
      AppDispatcher.handleViewAction({
          type: Constants.ActionTypes.SUGGESTION_COMPLETE_WORD,
          id: suggestionId,
          term
      });
  }
  
  export function emitClearSuggestions(suggestionId) {
      AppDispatcher.handleViewAction({
          type: Constants.ActionTypes.SUGGESTION_CLEAR_SUGGESTIONS,
          id: suggestionId
      });
  }
  
  export function emitPreferenceChangedEvent(preference) {
      AppDispatcher.handleServerAction({
          type: Constants.ActionTypes.RECIEVED_PREFERENCE,
          preference
      });
  }
  