summaryrefslogtreecommitdiffstats
path: root/webapp/actions/global_actions.jsx
diff options
context:
space:
mode:
Diffstat (limited to 'webapp/actions/global_actions.jsx')
-rw-r--r--webapp/actions/global_actions.jsx626
1 files changed, 0 insertions, 626 deletions
diff --git a/webapp/actions/global_actions.jsx b/webapp/actions/global_actions.jsx
deleted file mode 100644
index 73a57e0b0..000000000
--- a/webapp/actions/global_actions.jsx
+++ /dev/null
@@ -1,626 +0,0 @@
-// Copyright (c) 2015-present 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 UserStore from 'stores/user_store.jsx';
-import BrowserStore from 'stores/browser_store.jsx';
-import ErrorStore from 'stores/error_store.jsx';
-import TeamStore from 'stores/team_store.jsx';
-import SearchStore from 'stores/search_store.jsx';
-
-import {handleNewPost} from 'actions/post_actions.jsx';
-import {loadProfilesForSidebar, loadNewDMIfNeeded, loadNewGMIfNeeded} from 'actions/user_actions.jsx';
-import {loadChannelsForCurrentUser} from 'actions/channel_actions.jsx';
-import {stopPeriodicStatusUpdates} from 'actions/status_actions.jsx';
-import * as WebsocketActions from 'actions/websocket_actions.jsx';
-import {trackEvent} from 'actions/diagnostics_actions.jsx';
-
-import {ActionTypes, Constants, ErrorPageTypes} from 'utils/constants.jsx';
-import EventTypes from 'utils/event_types.jsx';
-
-import WebSocketClient from 'client/web_websocket_client.jsx';
-import {sortTeamsByDisplayName} from 'utils/team_utils.jsx';
-import * as Utils from 'utils/utils.jsx';
-
-import en from 'i18n/en.json';
-import * as I18n from 'i18n/i18n.jsx';
-import {browserHistory} from 'react-router/es6';
-
-// Redux actions
-import store from 'stores/redux_store.jsx';
-const dispatch = store.dispatch;
-const getState = store.getState;
-
-import {Client4} from 'mattermost-redux/client';
-
-import {removeUserFromTeam} from 'mattermost-redux/actions/teams';
-import {viewChannel, getChannelStats, getMyChannelMember, getChannelAndMyMember, createDirectChannel, joinChannel} from 'mattermost-redux/actions/channels';
-import {getPostThread} from 'mattermost-redux/actions/posts';
-
-export function emitChannelClickEvent(channel) {
- function userVisitedFakeChannel(chan, success, fail) {
- const currentUserId = UserStore.getCurrentId();
- const otherUserId = Utils.getUserIdFromChannelName(chan);
- createDirectChannel(currentUserId, otherUserId)(dispatch, getState).then(
- (result) => {
- const receivedChannel = result.data;
-
- if (receivedChannel) {
- success(receivedChannel);
- } else {
- fail();
- }
- }
- );
- }
- function switchToChannel(chan) {
- const channelMember = ChannelStore.getMyMember(chan.id);
- const getMyChannelMemberPromise = getMyChannelMember(chan.id)(dispatch, getState);
- const oldChannelId = ChannelStore.getCurrentId();
-
- getMyChannelMemberPromise.then(() => {
- getChannelStats(chan.id)(dispatch, getState);
- viewChannel(chan.id, oldChannelId)(dispatch, getState);
-
- // Mark previous and next channel as read
- ChannelStore.resetCounts([chan.id, oldChannelId]);
- reloadIfServerVersionChanged();
- });
-
- // Subtract mentions for the team
- const {msgs, mentions} = ChannelStore.getUnreadCounts()[chan.id] || {msgs: 0, mentions: 0};
- TeamStore.subtractUnread(chan.team_id, msgs, mentions);
-
- BrowserStore.setGlobalItem(chan.team_id, chan.id);
-
- loadProfilesForSidebar();
-
- AppDispatcher.handleViewAction({
- type: ActionTypes.CLICK_CHANNEL,
- name: chan.name,
- id: chan.id,
- team_id: chan.team_id,
- total_msg_count: chan.total_msg_count,
- channelMember,
- prev: oldChannelId
- });
- }
-
- if (channel.fake) {
- userVisitedFakeChannel(
- channel,
- (data) => {
- switchToChannel(data);
- },
- () => {
- browserHistory.push('/' + this.state.currentTeam.name);
- }
- );
- } else {
- switchToChannel(channel);
- }
-}
-
-export async function doFocusPost(channelId, postId, data) {
- AppDispatcher.handleServerAction({
- type: ActionTypes.RECEIVED_FOCUSED_POST,
- postId,
- channelId,
- post_list: data
- });
-
- dispatch({
- type: ActionTypes.RECEIVED_FOCUSED_POST,
- data: postId,
- channelId
- });
-
- const member = getState().entities.channels.myMembers[channelId];
- if (member == null) {
- await joinChannel(UserStore.getCurrentId(), null, channelId)(dispatch, getState);
- }
-
- loadChannelsForCurrentUser();
- getChannelStats(channelId)(dispatch, getState);
-}
-
-export function emitPostFocusEvent(postId, onSuccess) {
- loadChannelsForCurrentUser();
- getPostThread(postId)(dispatch, getState).then(
- (data) => {
- if (data) {
- const channelId = data.posts[data.order[0]].channel_id;
- const channel = ChannelStore.getChannelById(channelId);
- if (channel && channel.type === Constants.DM_CHANNEL) {
- loadNewDMIfNeeded(channel.id);
- } else if (channel && channel.type === Constants.GM_CHANNEL) {
- loadNewGMIfNeeded(channel.id);
- }
-
- doFocusPost(channelId, postId, data).then(() => {
- if (onSuccess) {
- onSuccess();
- }
- });
- } else {
- browserHistory.push('/error?type=' + ErrorPageTypes.PERMALINK_NOT_FOUND);
- }
- }
- );
-}
-
-export function emitCloseRightHandSide() {
- SearchStore.storeSearchResults(null, false, false);
- SearchStore.emitSearchChange();
-
- dispatch({
- type: ActionTypes.SELECT_POST,
- postId: ''
- });
-}
-
-export function emitPostFocusRightHandSideFromSearch(post, isMentionSearch) {
- getPostThread(post.id)(dispatch, getState).then(
- () => {
- AppDispatcher.handleServerAction({
- type: ActionTypes.RECEIVED_POST_SELECTED,
- postId: Utils.getRootId(post),
- from_search: SearchStore.getSearchTerm(),
- from_flagged_posts: SearchStore.getIsFlaggedPosts(),
- from_pinned_posts: SearchStore.getIsPinnedPosts()
- });
-
- AppDispatcher.handleServerAction({
- type: ActionTypes.RECEIVED_SEARCH,
- results: null,
- is_mention_search: isMentionSearch
- });
- }
- );
-}
-
-export function emitLeaveTeam() {
- removeUserFromTeam(TeamStore.getCurrentId(), UserStore.getCurrentId())(dispatch, getState);
-}
-
-export function emitUserPostedEvent(post) {
- AppDispatcher.handleServerAction({
- type: ActionTypes.CREATE_POST,
- post
- });
-}
-
-export function emitUserCommentedEvent(post) {
- AppDispatcher.handleServerAction({
- type: ActionTypes.CREATE_COMMENT,
- post
- });
-}
-
-export function showAccountSettingsModal() {
- AppDispatcher.handleViewAction({
- type: ActionTypes.TOGGLE_ACCOUNT_SETTINGS_MODAL,
- value: true
- });
-}
-
-export function showShortcutsModal() {
- AppDispatcher.handleViewAction({
- type: ActionTypes.TOGGLE_SHORTCUTS_MODAL,
- value: true
- });
-}
-
-export function showDeletePostModal(post, commentCount = 0) {
- AppDispatcher.handleViewAction({
- type: ActionTypes.TOGGLE_DELETE_POST_MODAL,
- value: true,
- post,
- commentCount
- });
-}
-
-export function showChannelHeaderUpdateModal(channel) {
- AppDispatcher.handleViewAction({
- type: ActionTypes.TOGGLE_CHANNEL_HEADER_UPDATE_MODAL,
- value: true,
- channel
- });
-}
-
-export function showChannelPurposeUpdateModal(channel) {
- AppDispatcher.handleViewAction({
- type: ActionTypes.TOGGLE_CHANNEL_PURPOSE_UPDATE_MODAL,
- value: true,
- channel
- });
-}
-
-export function showChannelNameUpdateModal(channel) {
- AppDispatcher.handleViewAction({
- type: ActionTypes.TOGGLE_CHANNEL_NAME_UPDATE_MODAL,
- value: true,
- channel
- });
-}
-
-export function showGetPostLinkModal(post) {
- AppDispatcher.handleViewAction({
- type: ActionTypes.TOGGLE_GET_POST_LINK_MODAL,
- value: true,
- post
- });
-}
-
-export function showGetPublicLinkModal(fileId) {
- AppDispatcher.handleViewAction({
- type: ActionTypes.TOGGLE_GET_PUBLIC_LINK_MODAL,
- value: true,
- fileId
- });
-}
-
-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 showLeaveTeamModal() {
- AppDispatcher.handleViewAction({
- type: ActionTypes.TOGGLE_LEAVE_TEAM_MODAL,
- value: true
- });
-}
-
-export function showLeavePrivateChannelModal(channel) {
- AppDispatcher.handleViewAction({
- type: ActionTypes.TOGGLE_LEAVE_PRIVATE_CHANNEL_MODAL,
- value: channel
- });
-}
-
-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.RECEIVED_PREFERENCE,
- preference
- });
-
- if (addedNewDmUser(preference)) {
- loadProfilesForSidebar();
- }
-}
-
-export function emitPreferencesChangedEvent(preferences) {
- AppDispatcher.handleServerAction({
- type: Constants.ActionTypes.RECEIVED_PREFERENCES,
- preferences
- });
-
- if (preferences.findIndex(addedNewDmUser) !== -1) {
- loadProfilesForSidebar();
- }
-}
-
-function addedNewDmUser(preference) {
- return preference.category === Constants.Preferences.CATEGORY_DIRECT_CHANNEL_SHOW && preference.value === 'true';
-}
-
-export function emitPreferencesDeletedEvent(preferences) {
- AppDispatcher.handleServerAction({
- type: Constants.ActionTypes.DELETED_PREFERENCES,
- preferences
- });
-}
-
-export function sendEphemeralPost(message, channelId, parentId) {
- const timestamp = Utils.getTimestamp();
- const post = {
- id: Utils.generateId(),
- user_id: '0',
- channel_id: channelId || ChannelStore.getCurrentId(),
- message,
- type: Constants.PostTypes.EPHEMERAL,
- create_at: timestamp,
- update_at: timestamp,
- root_id: parentId,
- parent_id: parentId,
- props: {}
- };
-
- handleNewPost(post);
-}
-
-export function newLocalizationSelected(locale) {
- const localeInfo = I18n.getLanguageInfo(locale);
-
- if (locale === 'en' || !localeInfo) {
- AppDispatcher.handleServerAction({
- type: ActionTypes.RECEIVED_LOCALE,
- locale,
- translations: en
- });
- } else {
- Client4.getTranslations(localeInfo.url).then(
- (data, res) => {
- let translations = data;
- if (!data && res.text) {
- translations = JSON.parse(res.text);
- }
- AppDispatcher.handleServerAction({
- type: ActionTypes.RECEIVED_LOCALE,
- locale,
- translations
- });
- }
- ).catch(
- () => {} //eslint-disable-line no-empty-function
- );
- }
-}
-
-export function loadCurrentLocale() {
- const user = UserStore.getCurrentUser();
-
- if (user && user.locale) {
- newLocalizationSelected(user.locale);
- } else {
- loadDefaultLocale();
- }
-}
-
-export function loadDefaultLocale() {
- let locale = global.window.mm_config.DefaultClientLocale;
-
- if (!I18n.getLanguageInfo(locale)) {
- locale = 'en';
- }
-
- return newLocalizationSelected(locale);
-}
-
-let lastTimeTypingSent = 0;
-export function emitLocalUserTypingEvent(channelId, parentId) {
- const t = Date.now();
- const membersInChannel = ChannelStore.getStats(channelId).member_count;
-
- if (global.mm_license.IsLicensed === 'true' && global.mm_config.ExperimentalTownSquareIsReadOnly === 'true') {
- const channel = ChannelStore.getChannelById(channelId);
- if (channel && ChannelStore.isDefault(channel)) {
- return;
- }
- }
-
- if (((t - lastTimeTypingSent) > global.window.mm_config.TimeBetweenUserTypingUpdatesMilliseconds) && membersInChannel < global.window.mm_config.MaxNotificationsPerChannel && global.window.mm_config.EnableUserTypingMessages === 'true') {
- WebSocketClient.userTyping(channelId, parentId);
- lastTimeTypingSent = t;
- }
-}
-
-export function emitRemoteUserTypingEvent(channelId, userId, postParentId) {
- AppDispatcher.handleViewAction({
- type: Constants.ActionTypes.USER_TYPING,
- channelId,
- userId,
- postParentId
- });
-}
-
-export function emitUserLoggedOutEvent(redirectTo = '/', shouldSignalLogout = true) {
- Client4.logout().then(
- () => {
- if (shouldSignalLogout) {
- BrowserStore.signalLogout();
- }
-
- clientLogout(redirectTo);
- }
- ).catch(
- () => {
- browserHistory.push(redirectTo);
- }
- );
-}
-
-export function clientLogout(redirectTo = '/') {
- BrowserStore.clear();
- ErrorStore.clearLastError();
- ChannelStore.clear();
- stopPeriodicStatusUpdates();
- WebsocketActions.close();
- document.cookie = 'MMUSERID=;expires=Thu, 01 Jan 1970 00:00:01 GMT;';
- window.location.href = redirectTo;
-}
-
-export function emitSearchMentionsEvent(user) {
- let terms = '';
- if (user.notify_props) {
- const termKeys = UserStore.getMentionKeys(user.id);
-
- if (termKeys.indexOf('@channel') !== -1) {
- termKeys[termKeys.indexOf('@channel')] = '';
- }
-
- if (termKeys.indexOf('@all') !== -1) {
- termKeys[termKeys.indexOf('@all')] = '';
- }
-
- terms = termKeys.join(' ');
- }
-
- trackEvent('api', 'api_posts_search_mention');
-
- AppDispatcher.handleServerAction({
- type: ActionTypes.RECEIVED_SEARCH_TERM,
- term: terms,
- do_search: true,
- is_mention_search: true
- });
-}
-
-export function toggleSideBarAction(visible) {
- if (!visible) {
- //Array of actions resolving in the closing of the sidebar
- AppDispatcher.handleServerAction({
- type: ActionTypes.RECEIVED_SEARCH,
- results: null
- });
-
- AppDispatcher.handleServerAction({
- type: ActionTypes.RECEIVED_SEARCH_TERM,
- term: null,
- do_search: false,
- is_mention_search: false
- });
-
- AppDispatcher.handleServerAction({
- type: ActionTypes.RECEIVED_POST_SELECTED,
- postId: null
- });
- }
-}
-
-export function toggleSideBarRightMenuAction() {
- AppDispatcher.handleServerAction({
- type: ActionTypes.RECEIVED_SEARCH,
- results: null
- });
-
- AppDispatcher.handleServerAction({
- type: ActionTypes.RECEIVED_POST_SELECTED,
- postId: null
- });
-
- document.querySelector('.app__body .inner-wrap').classList.remove('move--right', 'move--left', 'move--left-small');
- document.querySelector('.app__body .sidebar--left').classList.remove('move--right');
- document.querySelector('.app__body .sidebar--right').classList.remove('move--left');
- document.querySelector('.app__body .sidebar--menu').classList.remove('move--left');
-}
-
-export function emitBrowserFocus(focus) {
- AppDispatcher.handleViewAction({
- type: ActionTypes.BROWSER_CHANGE_FOCUS,
- focus
- });
-}
-
-export function redirectUserToDefaultTeam() {
- const teams = TeamStore.getAll();
- const teamMembers = TeamStore.getMyTeamMembers();
- let teamId = BrowserStore.getGlobalItem('team');
-
- function redirect(teamName, channelName) {
- browserHistory.push(`/${teamName}/channels/${channelName}`);
- }
-
- if (!teams[teamId] && teamMembers.length > 0) {
- let myTeams = [];
- for (const index in teamMembers) {
- if (teamMembers.hasOwnProperty(index)) {
- const teamMember = teamMembers[index];
- myTeams.push(teams[teamMember.team_id]);
- }
- }
-
- if (myTeams.length > 0) {
- myTeams = myTeams.sort(sortTeamsByDisplayName);
- teamId = myTeams[0].id;
- }
- }
-
- if (teams[teamId]) {
- const channelId = BrowserStore.getGlobalItem(teamId);
- const channel = ChannelStore.getChannelById(channelId);
- if (channel) {
- redirect(teams[teamId].name, channel);
- } else if (channelId) {
- getChannelAndMyMember(channelId)(dispatch, getState).then(
- (data) => {
- if (data) {
- redirect(teams[teamId].name, data.channel.name);
- } else {
- redirect(teams[teamId].name, 'town-square');
- }
- }
- );
- } else {
- redirect(teams[teamId].name, 'town-square');
- }
- } else {
- browserHistory.push('/select_team');
- }
-}
-
-export function postListScrollChange(forceScrollToBottom = false) {
- AppDispatcher.handleViewAction({
- type: EventTypes.POST_LIST_SCROLL_CHANGE,
- value: forceScrollToBottom
- });
-}
-
-export function emitPopoverMentionKeyClick(isRHS, mentionKey) {
- AppDispatcher.handleViewAction({
- type: ActionTypes.POPOVER_MENTION_KEY_CLICK,
- isRHS,
- mentionKey
- });
-}
-
-let serverVersion = '';
-
-export function reloadIfServerVersionChanged() {
- const newServerVersion = Client4.getServerVersion();
- if (serverVersion && serverVersion !== newServerVersion) {
- console.log('Detected version update refreshing the page'); //eslint-disable-line no-console
- window.location.reload(true);
- }
-
- serverVersion = newServerVersion;
-}