PLT-3077 Add group messaging (#5489)
* Implement server changes for group messaging * Majority of client-side implementation * Some server updates * Added new React multiselect component * Fix style issues * Add custom renderer for options * Fix model test * Update ENTER functionality for multiselect control * Remove buttons from multiselect UI control * Updating group messaging UI (#5524) * Move filter controls up a component level * Scroll with arrow keys * Updating mobile layout for multiselect (#5534) * Fix race condition when backspacing quickly * Hidden or new GMs show up for regular messages * Add overriding of number remaining text * Add UI filtering for team if config setting set * Add icon to channel switcher and class prop to status icon * Minor updates per feedback * Improving group messaging UI (#5563) * UX changes per feedback * Update email for group messages * UI fixes for group messaging (#5587) * Fix missing localization string * Add maximum users message when adding members to GM * Fix input clearing on Android * Updating group messaging UI (#5603) * Updating UI for group messaging (#5604)
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
8c5cee9521
Коммит
3a91d4e5e4
@@ -12,7 +12,7 @@ import Client from 'client/web_client.jsx';
|
||||
import AppDispatcher from 'dispatcher/app_dispatcher.jsx';
|
||||
import {Constants, ActionTypes} from 'utils/constants.jsx';
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
import {sortChannelsByDisplayName} from 'utils/channel_utils.jsx';
|
||||
import {sortChannelsByDisplayName, buildGroupChannelName} from 'utils/channel_utils.jsx';
|
||||
|
||||
import React from 'react';
|
||||
|
||||
@@ -25,12 +25,15 @@ class SwitchChannelSuggestion extends Suggestion {
|
||||
className += ' suggestion--selected';
|
||||
}
|
||||
|
||||
const displayName = item.display_name;
|
||||
let displayName = item.display_name;
|
||||
let icon = null;
|
||||
if (item.type === Constants.OPEN_CHANNEL) {
|
||||
icon = <div className='status'><i className='fa fa-globe'/></div>;
|
||||
} else if (item.type === Constants.PRIVATE_CHANNEL) {
|
||||
icon = <div className='status'><i className='fa fa-lock'/></div>;
|
||||
} else if (item.type === Constants.GM_CHANNEL) {
|
||||
displayName = buildGroupChannelName(item.id);
|
||||
icon = <div className='status status--group'>{UserStore.getProfileListInChannel(item.id, true).length}</div>;
|
||||
} else {
|
||||
icon = (
|
||||
<div className='pull-left'>
|
||||
@@ -74,7 +77,11 @@ export default class SwitchChannelProvider extends Provider {
|
||||
for (const id of Object.keys(allChannels)) {
|
||||
const channel = allChannels[id];
|
||||
if (channel.display_name.toLowerCase().indexOf(channelPrefix.toLowerCase()) !== -1) {
|
||||
channels.push(channel);
|
||||
const newChannel = Object.assign({}, channel);
|
||||
if (newChannel.type === Constants.GM_CHANNEL) {
|
||||
newChannel.name = buildGroupChannelName(newChannel.id);
|
||||
}
|
||||
channels.push(newChannel);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Ссылка в новой задаче
Block a user