forked from Ivasoft/mattermost-mobile
* Remove mattermost-redux * Move mm-redux files into app/redux * Add @redux path to tsconfig.json * Fix imports * Install missing dependencies * Fix tsc errors * Fix i18n_utils test * Fix more imports * Remove redux websocket * Fix tests * Rename @redux * Apply changes from mattermost-redux PR 1103 * Remove mattermost-redux mention in template * Add missing imports * Rename app/redux/ to app/mm-redux/ * Remove test file * Fix fetching Sidebar GM profiles Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
57 lines
2.0 KiB
JavaScript
57 lines
2.0 KiB
JavaScript
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
import {getDirectChannelName} from '@mm-redux/utils/channel_utils';
|
|
import {createDirectChannel, createGroupChannel} from '@mm-redux/actions/channels';
|
|
import {getProfilesByIds, getStatusesByIds} from '@mm-redux/actions/users';
|
|
import {handleSelectChannel, toggleDMChannel, toggleGMChannel} from 'app/actions/views/channel';
|
|
|
|
export function makeDirectChannel(otherUserId, switchToChannel = true) {
|
|
return async (dispatch, getState) => {
|
|
const state = getState();
|
|
const {currentUserId} = state.entities.users;
|
|
const channelName = getDirectChannelName(currentUserId, otherUserId);
|
|
const {channels, myMembers} = state.entities.channels;
|
|
|
|
dispatch(getProfilesByIds([otherUserId]));
|
|
dispatch(getStatusesByIds([otherUserId]));
|
|
|
|
let result;
|
|
let channel = Object.values(channels).find((c) => c.name === channelName);
|
|
if (channel && myMembers[channel.id]) {
|
|
result = {data: channel};
|
|
|
|
dispatch(toggleDMChannel(otherUserId, 'true', channel.id));
|
|
} else {
|
|
result = await dispatch(createDirectChannel(currentUserId, otherUserId));
|
|
channel = result.data;
|
|
}
|
|
|
|
if (channel && switchToChannel) {
|
|
dispatch(handleSelectChannel(channel.id));
|
|
}
|
|
|
|
return result;
|
|
};
|
|
}
|
|
|
|
export function makeGroupChannel(otherUserIds) {
|
|
return async (dispatch, getState) => {
|
|
const state = getState();
|
|
const {currentUserId} = state.entities.users;
|
|
|
|
dispatch(getProfilesByIds(otherUserIds));
|
|
dispatch(getStatusesByIds(otherUserIds));
|
|
|
|
const result = await createGroupChannel([currentUserId, ...otherUserIds])(dispatch, getState);
|
|
const channel = result.data;
|
|
|
|
if (channel) {
|
|
dispatch(toggleGMChannel(channel.id, 'true'));
|
|
dispatch(handleSelectChannel(channel.id));
|
|
}
|
|
|
|
return result;
|
|
};
|
|
}
|