// 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 Constants from '../utils/constants.jsx'; const ActionTypes = Constants.ActionTypes; import * as AsyncClient from '../utils/async_client.jsx'; import * as Client from '../utils/client.jsx'; import * as Utils from '../utils/utils.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 emitPostFocusRightHandSideEvent(post) { Client.getPost( post.channel_id, post.id, (data) => { AppDispatcher.handleServerAction({ type: ActionTypes.RECIEVED_POST_SELECTED, post_list: data }); AppDispatcher.handleServerAction({ type: ActionTypes.RECIEVED_SEARCH, results: null }); }, (err) => { AsyncClient.dispatchError(err, 'getPost'); } ); var postChannel = ChannelStore.get(post.channel_id); Utils.switchChannel(postChannel); } 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 }); }