diff options
Diffstat (limited to 'web/react')
41 files changed, 229 insertions, 218 deletions
diff --git a/web/react/components/admin_console/image_settings.jsx b/web/react/components/admin_console/image_settings.jsx index 12bf554ea..86f78e093 100644 --- a/web/react/components/admin_console/image_settings.jsx +++ b/web/react/components/admin_console/image_settings.jsx @@ -8,10 +8,6 @@ import crypto from 'crypto'; import {injectIntl, intlShape, defineMessages, FormattedMessage} from 'mm-intl'; const holders = defineMessages({ - storeDisabled: { - id: 'admin.image.storeDisabled', - defaultMessage: 'Disable File Storage' - }, storeLocal: { id: 'admin.image.storeLocal', defaultMessage: 'Local File System' @@ -242,7 +238,6 @@ class FileSettings extends React.Component { defaultValue={this.props.config.FileSettings.DriverName} onChange={this.handleChange.bind(this, 'DriverName')} > - <option value=''>{formatMessage(holders.storeDisabled)}</option> <option value='local'>{formatMessage(holders.storeLocal)}</option> <option value='amazons3'>{formatMessage(holders.storeAmazonS3)}</option> </select> diff --git a/web/react/components/admin_console/user_item.jsx b/web/react/components/admin_console/user_item.jsx index 02b01b090..0c1a55cc1 100644 --- a/web/react/components/admin_console/user_item.jsx +++ b/web/react/components/admin_console/user_item.jsx @@ -360,8 +360,8 @@ export default class UserItem extends React.Component { height='36' width='36' /> - <span className='member-name'>{Utils.getDisplayName(user)}</span> - <span className='member-email'>{email}</span> + <span className='more-name'>{Utils.getDisplayName(user)}</span> + <span className='more-description'>{email}</span> <div className='dropdown member-drop'> <a href='#' diff --git a/web/react/components/channel_header.jsx b/web/react/components/channel_header.jsx index 8fc3cd63d..a827cbcc6 100644 --- a/web/react/components/channel_header.jsx +++ b/web/react/components/channel_header.jsx @@ -114,7 +114,7 @@ export default class ChannelHeader extends React.Component { } AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_SEARCH_TERM, + type: ActionTypes.RECEIVED_SEARCH_TERM, term: terms, do_search: true, is_mention_search: true diff --git a/web/react/components/create_comment.jsx b/web/react/components/create_comment.jsx index 709485991..55dd8276c 100644 --- a/web/react/components/create_comment.jsx +++ b/web/react/components/create_comment.jsx @@ -152,7 +152,7 @@ class CreateComment extends React.Component { ChannelStore.setChannelMember(member); AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_POST, + type: ActionTypes.RECEIVED_POST, post: data }); }.bind(this), @@ -216,7 +216,7 @@ class CreateComment extends React.Component { } AppDispatcher.handleViewAction({ - type: ActionTypes.RECIEVED_EDIT_POST, + type: ActionTypes.RECEIVED_EDIT_POST, refocusId: '#reply_textbox', title: this.props.intl.formatMessage(holders.commentTitle), message: lastPost.message, diff --git a/web/react/components/create_post.jsx b/web/react/components/create_post.jsx index ecabdaee6..b9fbf09b5 100644 --- a/web/react/components/create_post.jsx +++ b/web/react/components/create_post.jsx @@ -364,7 +364,7 @@ class CreatePost extends React.Component { var type = (lastPost.root_id && lastPost.root_id.length > 0) ? formatMessage(holders.comment) : formatMessage(holders.post); AppDispatcher.handleViewAction({ - type: ActionTypes.RECIEVED_EDIT_POST, + type: ActionTypes.RECEIVED_EDIT_POST, refocusId: '#post_textbox', title: type, message: lastPost.message, diff --git a/web/react/components/delete_post_modal.jsx b/web/react/components/delete_post_modal.jsx index 9d7dcb3e5..65ffa96a1 100644 --- a/web/react/components/delete_post_modal.jsx +++ b/web/react/components/delete_post_modal.jsx @@ -62,12 +62,12 @@ export default class DeletePostModal extends React.Component { var selectedPost = selectedList.posts[selectedList.order[0]]; if ((selectedPost.id === this.state.post.id && !this.state.root_id) || selectedPost.root_id === this.state.post.id) { AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_SEARCH, + type: ActionTypes.RECEIVED_SEARCH, results: null }); AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_POST_SELECTED, + type: ActionTypes.RECEIVED_POST_SELECTED, results: null }); } else if (selectedPost.id === this.state.post.id && this.state.root_id) { @@ -76,12 +76,12 @@ export default class DeletePostModal extends React.Component { delete selectedList.posts[selectedPost.id]; AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_POST_SELECTED, + type: ActionTypes.RECEIVED_POST_SELECTED, post_list: selectedList }); AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_SEARCH, + type: ActionTypes.RECEIVED_SEARCH, results: null }); } diff --git a/web/react/components/edit_channel_header_modal.jsx b/web/react/components/edit_channel_header_modal.jsx index 1066d123e..f6865fadd 100644 --- a/web/react/components/edit_channel_header_modal.jsx +++ b/web/react/components/edit_channel_header_modal.jsx @@ -68,7 +68,7 @@ class EditChannelHeaderModal extends React.Component { this.onHide(); AppDispatcher.handleServerAction({ - type: Constants.ActionTypes.RECIEVED_CHANNEL, + type: Constants.ActionTypes.RECEIVED_CHANNEL, channel }); }, diff --git a/web/react/components/member_list_item.jsx b/web/react/components/member_list_item.jsx index c50ee5c96..41ea58eeb 100644 --- a/web/react/components/member_list_item.jsx +++ b/web/react/components/member_list_item.jsx @@ -124,8 +124,8 @@ export default class MemberListItem extends React.Component { height='36' width='36' /> - <div className='member-name'>{Utils.displayUsername(member.id)}</div> - <div className='member-description'>{member.email}</div> + <div className='more-name'>{Utils.displayUsername(member.id)}</div> + <div className='more-description'>{member.email}</div> </td> <td className='td--action lg'>{invite}</td> </tr> diff --git a/web/react/components/member_list_team_item.jsx b/web/react/components/member_list_team_item.jsx index 6e1006911..30086d1b2 100644 --- a/web/react/components/member_list_team_item.jsx +++ b/web/react/components/member_list_team_item.jsx @@ -208,8 +208,8 @@ export default class MemberListTeamItem extends React.Component { height='36' width='36' /> - <span className='member-name'>{Utils.displayUsername(user.id)}</span> - <span className='member-email'>{email}</span> + <span className='more-name'>{Utils.displayUsername(user.id)}</span> + <span className='more-description'>{email}</span> <div className='dropdown member-drop'> <a href='#' diff --git a/web/react/components/more_channels.jsx b/web/react/components/more_channels.jsx index d12ea4703..d800f93d8 100644 --- a/web/react/components/more_channels.jsx +++ b/web/react/components/more_channels.jsx @@ -114,7 +114,7 @@ export default class MoreChannels extends React.Component { <tr key={channel.id}> <td> <p className='more-name'>{channel.display_name}</p> - <p className='more-purpose'>{channel.purpose}</p> + <p className='more-description'>{channel.purpose}</p> </td> <td className='td--action'> {joinButton} diff --git a/web/react/components/more_direct_channels.jsx b/web/react/components/more_direct_channels.jsx index f8a6884d0..3b72b251c 100644 --- a/web/react/components/more_direct_channels.jsx +++ b/web/react/components/more_direct_channels.jsx @@ -57,7 +57,7 @@ class MoreDirectChannels extends React.Component { } componentWillUnmount() { - UserStore.addChangeListener(this.handleUserChange); + UserStore.removeChangeListener(this.handleUserChange); } componentDidUpdate(prevProps) { @@ -318,4 +318,4 @@ MoreDirectChannels.propTypes = { onModalDismissed: React.PropTypes.func }; -export default injectIntl(MoreDirectChannels);
\ No newline at end of file +export default injectIntl(MoreDirectChannels); diff --git a/web/react/components/navbar.jsx b/web/react/components/navbar.jsx index 8005678a2..e6a9fbd25 100644 --- a/web/react/components/navbar.jsx +++ b/web/react/components/navbar.jsx @@ -82,12 +82,12 @@ export default class Navbar extends React.Component { var windowWidth = $(window).outerWidth(); if (windowWidth <= 768) { AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_SEARCH, + type: ActionTypes.RECEIVED_SEARCH, results: null }); AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_POST_SELECTED, + type: ActionTypes.RECEIVED_POST_SELECTED, results: null }); diff --git a/web/react/components/post.jsx b/web/react/components/post.jsx index 53fe7fb5d..3619a9f8f 100644 --- a/web/react/components/post.jsx +++ b/web/react/components/post.jsx @@ -31,12 +31,12 @@ export default class Post extends React.Component { data.posts = this.props.posts; AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_POST_SELECTED, + type: ActionTypes.RECEIVED_POST_SELECTED, post_list: data }); AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_SEARCH, + type: ActionTypes.RECEIVED_SEARCH, results: null }); } @@ -59,7 +59,7 @@ export default class Post extends React.Component { ChannelStore.setChannelMember(member); AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_POST, + type: ActionTypes.RECEIVED_POST, post: data }); }, diff --git a/web/react/components/post_deleted_modal.jsx b/web/react/components/post_deleted_modal.jsx index 218f57eb5..642befeab 100644 --- a/web/react/components/post_deleted_modal.jsx +++ b/web/react/components/post_deleted_modal.jsx @@ -24,19 +24,19 @@ export default class PostDeletedModal extends React.Component { } handleClose() { AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_SEARCH, + type: ActionTypes.RECEIVED_SEARCH, results: null }); AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_SEARCH_TERM, + type: ActionTypes.RECEIVED_SEARCH_TERM, term: null, do_search: false, is_mention_search: false }); AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_POST_SELECTED, + type: ActionTypes.RECEIVED_POST_SELECTED, results: null }); } diff --git a/web/react/components/posts_view.jsx b/web/react/components/posts_view.jsx index f108ace2e..ebe19abad 100644 --- a/web/react/components/posts_view.jsx +++ b/web/react/components/posts_view.jsx @@ -94,7 +94,7 @@ export default class PostsView extends React.Component { }); } - this.scrollStopAction.fireAfter(1000); + this.scrollStopAction.fireAfter(2000); } handleScrollStop() { this.setState({ @@ -564,6 +564,8 @@ function ScrollToBottomArrows({isScrolling, atBottom, onClick}) { <div className={className} onClick={onClick} - /> + > + <span dangerouslySetInnerHTML={{__html: Constants.SCROLL_BOTTOM_ICON}} /> + </div> ); } diff --git a/web/react/components/rhs_comment.jsx b/web/react/components/rhs_comment.jsx index 1addebbe4..9c85e9940 100644 --- a/web/react/components/rhs_comment.jsx +++ b/web/react/components/rhs_comment.jsx @@ -49,7 +49,7 @@ class RhsComment extends React.Component { ChannelStore.setChannelMember(member); AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_POST, + type: ActionTypes.RECEIVED_POST, post: data }); }, @@ -267,4 +267,4 @@ RhsComment.propTypes = { post: React.PropTypes.object }; -export default injectIntl(RhsComment);
\ No newline at end of file +export default injectIntl(RhsComment); diff --git a/web/react/components/rhs_header_post.jsx b/web/react/components/rhs_header_post.jsx index d56ba76f8..cd310df56 100644 --- a/web/react/components/rhs_header_post.jsx +++ b/web/react/components/rhs_header_post.jsx @@ -21,12 +21,12 @@ export default class RhsHeaderPost extends React.Component { e.preventDefault(); AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_SEARCH, + type: ActionTypes.RECEIVED_SEARCH, results: null }); AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_POST_SELECTED, + type: ActionTypes.RECEIVED_POST_SELECTED, results: null }); } @@ -34,14 +34,14 @@ export default class RhsHeaderPost extends React.Component { e.preventDefault(); AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_SEARCH_TERM, + type: ActionTypes.RECEIVED_SEARCH_TERM, term: this.props.fromSearch, do_search: true, is_mention_search: this.props.isMentionSearch }); AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_POST_SELECTED, + type: ActionTypes.RECEIVED_POST_SELECTED, results: null }); } diff --git a/web/react/components/search_bar.jsx b/web/react/components/search_bar.jsx index 35d7e9514..f7cb1b8f2 100644 --- a/web/react/components/search_bar.jsx +++ b/web/react/components/search_bar.jsx @@ -74,19 +74,19 @@ class SearchBar extends React.Component { e.preventDefault(); AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_SEARCH, + type: ActionTypes.RECEIVED_SEARCH, results: null }); AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_SEARCH_TERM, + type: ActionTypes.RECEIVED_SEARCH_TERM, term: null, do_search: false, is_mention_search: false }); AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_POST_SELECTED, + type: ActionTypes.RECEIVED_POST_SELECTED, results: null }); } @@ -117,7 +117,7 @@ class SearchBar extends React.Component { } AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_SEARCH, + type: ActionTypes.RECEIVED_SEARCH, results: data, is_mention_search: isMentionSearch }); diff --git a/web/react/components/search_results_header.jsx b/web/react/components/search_results_header.jsx index 45f56f65a..7f88eb2c7 100644 --- a/web/react/components/search_results_header.jsx +++ b/web/react/components/search_results_header.jsx @@ -19,19 +19,19 @@ export default class SearchResultsHeader extends React.Component { e.preventDefault(); AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_SEARCH, + type: ActionTypes.RECEIVED_SEARCH, results: null }); AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_SEARCH_TERM, + type: ActionTypes.RECEIVED_SEARCH_TERM, term: null, do_search: false, is_mention_search: false }); AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_POST_SELECTED, + type: ActionTypes.RECEIVED_POST_SELECTED, results: null }); } @@ -72,4 +72,4 @@ export default class SearchResultsHeader extends React.Component { SearchResultsHeader.propTypes = { isMentionSearch: React.PropTypes.bool -};
\ No newline at end of file +}; diff --git a/web/react/components/sidebar.jsx b/web/react/components/sidebar.jsx index 14790fbec..c7dba306b 100644 --- a/web/react/components/sidebar.jsx +++ b/web/react/components/sidebar.jsx @@ -96,7 +96,7 @@ export default class Sidebar extends React.Component { let directChannel = channels.find(Utils.isDirectChannelForUser.bind(null, teammateId)); // a direct channel doesn't exist yet so create a fake one - if (!directChannel) { + if (directChannel == null) { directChannel = { name: Utils.getDirectChannelName(currentUserId, teammateId), last_post_at: 0, @@ -104,6 +104,8 @@ export default class Sidebar extends React.Component { type: Constants.DM_CHANNEL, fake: true }; + } else { + directChannel = JSON.parse(JSON.stringify(directChannel)); } directChannel.display_name = Utils.displayUsername(teammateId); diff --git a/web/react/components/signup_user_complete.jsx b/web/react/components/signup_user_complete.jsx index 672213d1a..b770a2a2c 100644 --- a/web/react/components/signup_user_complete.jsx +++ b/web/react/components/signup_user_complete.jsx @@ -362,6 +362,17 @@ class SignupUserComplete extends React.Component { ); } + if (signupMessage.length === 0 && !emailSignup) { + emailSignup = ( + <div> + <FormattedMessage + id='signup_user_completed.none' + defaultMessage='No user creation method has been enabled. Please contact an administrator for access.' + /> + </div> + ); + } + return ( <div> <form> diff --git a/web/react/components/user_settings/import_theme_modal.jsx b/web/react/components/user_settings/import_theme_modal.jsx index 66bed0b0b..e9e90a936 100644 --- a/web/react/components/user_settings/import_theme_modal.jsx +++ b/web/react/components/user_settings/import_theme_modal.jsx @@ -84,7 +84,7 @@ class ImportThemeModal extends React.Component { Client.updateUser(user, (data) => { AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_ME, + type: ActionTypes.RECEIVED_ME, me: data }); @@ -212,4 +212,4 @@ ImportThemeModal.propTypes = { intl: intlShape.isRequired }; -export default injectIntl(ImportThemeModal);
\ No newline at end of file +export default injectIntl(ImportThemeModal); diff --git a/web/react/components/user_settings/manage_command_hooks.jsx b/web/react/components/user_settings/manage_command_hooks.jsx index 948ab7885..3656424b2 100644 --- a/web/react/components/user_settings/manage_command_hooks.jsx +++ b/web/react/components/user_settings/manage_command_hooks.jsx @@ -271,7 +271,7 @@ export default class ManageCommandCmds extends React.Component { cmds.push( <div key={cmd.id} - className='webcmd__item' + className='webhook__item webcmd__item' > <div className='padding-top x2'> <strong> @@ -400,7 +400,7 @@ export default class ManageCommandCmds extends React.Component { } const existingCmds = ( - <div className='webcmds__container'> + <div className='webhooks__container webcmds__container'> <label className='control-label padding-top x2'> <FormattedMessage id='user.settings.cmds.existing' @@ -408,7 +408,7 @@ export default class ManageCommandCmds extends React.Component { /> </label> <div className='padding-top divider-light'></div> - <div className='webcmds__list'> + <div className='webhooks__list webcmds__list'> {displayCmds} </div> </div> @@ -530,17 +530,19 @@ export default class ManageCommandCmds extends React.Component { /> </label> <div className='padding-top'> - <label> - <input - type='checkbox' - checked={this.state.cmd.auto_complete} - onChange={this.updateAutoComplete} - /> - <FormattedMessage - id='user.settings.cmds.auto_complete_help' - defaultMessage='Show this command in autocomplete list' - /> - </label> + <div className='checkbox'> + <label> + <input + type='checkbox' + checked={this.state.cmd.auto_complete} + onChange={this.updateAutoComplete} + /> + <FormattedMessage + id='user.settings.cmds.auto_complete_help' + defaultMessage=' Show this command in autocomplete list' + /> + </label> + </div> </div> </div> <div className='padding-top x2'> @@ -637,7 +639,7 @@ export default class ManageCommandCmds extends React.Component { </div> {addError} </div> - <div className='padding-top padding-bottom'> + <div className='padding-top x2 padding-bottom'> <a className={'btn btn-sm btn-primary'} href='#' diff --git a/web/react/components/user_settings/user_settings_advanced.jsx b/web/react/components/user_settings/user_settings_advanced.jsx index 5c0757589..e513f81d2 100644 --- a/web/react/components/user_settings/user_settings_advanced.jsx +++ b/web/react/components/user_settings/user_settings_advanced.jsx @@ -47,10 +47,6 @@ const holders = defineMessages({ EMBED_PREVIEW: { id: 'user.settings.advance.embed_preview', defaultMessage: 'Show preview snippet of links below message' - }, - LOC_PREVIEW: { - id: 'user.settings.advance.loc_preview', - defaultMessage: 'Show user language in display settings' } }); diff --git a/web/react/components/user_settings/user_settings_display.jsx b/web/react/components/user_settings/user_settings_display.jsx index 4b11c06fb..5f23a8995 100644 --- a/web/react/components/user_settings/user_settings_display.jsx +++ b/web/react/components/user_settings/user_settings_display.jsx @@ -10,7 +10,6 @@ import PreferenceStore from '../../stores/preference_store.jsx'; import * as Utils from '../../utils/utils.jsx'; import Constants from '../../utils/constants.jsx'; -const PreReleaseFeatures = Constants.PRE_RELEASE_FEATURES; import {savePreferences} from '../../utils/client.jsx'; import {intlShape, injectIntl, defineMessages, FormattedMessage} from 'mm-intl'; @@ -379,46 +378,44 @@ class UserSettingsDisplay extends React.Component { ); } - if (Utils.isFeatureEnabled(PreReleaseFeatures.LOC_PREVIEW)) { - if (this.props.activeSection === 'languages') { - var inputs = []; - inputs.push( - <ManageLanguages - user={this.props.user} - key='languages-ui' - /> - ); + if (this.props.activeSection === 'languages') { + var inputs = []; + inputs.push( + <ManageLanguages + user={this.props.user} + key='languages-ui' + /> + ); - languagesSection = ( - <SettingItemMax - title={formatMessage(holders.language)} - width='medium' - inputs={inputs} - updateSection={(e) => { - this.updateSection(''); - e.preventDefault(); - }} - /> - ); - } else { - var locale = 'English'; - Utils.languages().forEach((l) => { - if (l.value === this.props.user.locale) { - locale = l.name; - } - }); + languagesSection = ( + <SettingItemMax + title={formatMessage(holders.language)} + width='medium' + inputs={inputs} + updateSection={(e) => { + this.updateSection(''); + e.preventDefault(); + }} + /> + ); + } else { + var locale = 'English'; + Utils.languages().forEach((l) => { + if (l.value === this.props.user.locale) { + locale = l.name; + } + }); - languagesSection = ( - <SettingItemMin - title={formatMessage(holders.language)} - width='medium' - describe={locale} - updateSection={() => { - this.updateSection('languages'); - }} - /> - ); - } + languagesSection = ( + <SettingItemMin + title={formatMessage(holders.language)} + width='medium' + describe={locale} + updateSection={() => { + this.updateSection('languages'); + }} + /> + ); } return ( diff --git a/web/react/components/user_settings/user_settings_modal.jsx b/web/react/components/user_settings/user_settings_modal.jsx index e0b72157b..90f28822b 100644 --- a/web/react/components/user_settings/user_settings_modal.jsx +++ b/web/react/components/user_settings/user_settings_modal.jsx @@ -234,7 +234,7 @@ class UserSettingsModal extends React.Component { tabs.push({name: 'developer', uiName: formatMessage(holders.developer), icon: 'glyphicon glyphicon-th'}); } - if (global.window.mm_config.EnableIncomingWebhooks === 'true' || global.window.mm_config.EnableOutgoingWebhooks === 'true') { + if (global.window.mm_config.EnableIncomingWebhooks === 'true' || global.window.mm_config.EnableOutgoingWebhooks === 'true' || global.window.mm_config.EnableCommands === 'true') { tabs.push({name: 'integrations', uiName: formatMessage(holders.integrations), icon: 'glyphicon glyphicon-transfer'}); } tabs.push({name: 'display', uiName: formatMessage(holders.display), icon: 'glyphicon glyphicon-eye-open'}); diff --git a/web/react/components/user_settings/user_settings_theme.jsx b/web/react/components/user_settings/user_settings_theme.jsx index a0656feaa..34c688db1 100644 --- a/web/react/components/user_settings/user_settings_theme.jsx +++ b/web/react/components/user_settings/user_settings_theme.jsx @@ -107,7 +107,7 @@ export default class ThemeSetting extends React.Component { Client.updateUser(user, (data) => { AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_ME, + type: ActionTypes.RECEIVED_ME, me: data }); diff --git a/web/react/dispatcher/event_helpers.jsx b/web/react/dispatcher/event_helpers.jsx index c1041e438..5476d707f 100644 --- a/web/react/dispatcher/event_helpers.jsx +++ b/web/react/dispatcher/event_helpers.jsx @@ -30,7 +30,7 @@ export function emitPostFocusEvent(postId) { postId, (data) => { AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_FOCUSED_POST, + type: ActionTypes.RECEIVED_FOCUSED_POST, postId, post_list: data }); @@ -47,13 +47,13 @@ export function emitPostFocusRightHandSideFromSearch(post, isMentionSearch) { post.id, (data) => { AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_POST_SELECTED, + type: ActionTypes.RECEIVED_POST_SELECTED, post_list: data, from_search: SearchStore.getSearchTerm() }); AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_SEARCH, + type: ActionTypes.RECEIVED_SEARCH, results: null, is_mention_search: isMentionSearch }); @@ -89,7 +89,7 @@ export function emitLoadMorePostsFocusedBottomEvent() { export function emitPostRecievedEvent(post) { AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_POST, + type: ActionTypes.RECEIVED_POST, post }); } @@ -177,7 +177,7 @@ export function emitClearSuggestions(suggestionId) { export function emitPreferenceChangedEvent(preference) { AppDispatcher.handleServerAction({ - type: Constants.ActionTypes.RECIEVED_PREFERENCE, + type: Constants.ActionTypes.RECEIVED_PREFERENCE, preference }); } diff --git a/web/react/stores/admin_store.jsx b/web/react/stores/admin_store.jsx index 8f43091a7..eb3254cfe 100644 --- a/web/react/stores/admin_store.jsx +++ b/web/react/stores/admin_store.jsx @@ -135,19 +135,19 @@ AdminStoreClass.dispatchToken = AppDispatcher.register((payload) => { var action = payload.action; switch (action.type) { - case ActionTypes.RECIEVED_LOGS: + case ActionTypes.RECEIVED_LOGS: AdminStore.saveLogs(action.logs); AdminStore.emitLogChange(); break; - case ActionTypes.RECIEVED_SERVER_AUDITS: + case ActionTypes.RECEIVED_SERVER_AUDITS: AdminStore.saveAudits(action.audits); AdminStore.emitAuditChange(); break; - case ActionTypes.RECIEVED_CONFIG: + case ActionTypes.RECEIVED_CONFIG: AdminStore.saveConfig(action.config); AdminStore.emitConfigChange(); break; - case ActionTypes.RECIEVED_ALL_TEAMS: + case ActionTypes.RECEIVED_ALL_TEAMS: AdminStore.saveAllTeams(action.teams); AdminStore.emitAllTeamsChange(); break; diff --git a/web/react/stores/channel_store.jsx b/web/react/stores/channel_store.jsx index 2337a573d..d650b23c2 100644 --- a/web/react/stores/channel_store.jsx +++ b/web/react/stores/channel_store.jsx @@ -296,7 +296,7 @@ ChannelStore.dispatchToken = AppDispatcher.register((payload) => { ChannelStore.emitChange(); break; - case ActionTypes.RECIEVED_FOCUSED_POST: { + case ActionTypes.RECEIVED_FOCUSED_POST: { const post = action.post_list.posts[action.postId]; ChannelStore.setCurrentId(post.channel_id); ChannelStore.setPostMode(ChannelStore.POST_MODE_FOCUS); @@ -304,7 +304,7 @@ ChannelStore.dispatchToken = AppDispatcher.register((payload) => { break; } - case ActionTypes.RECIEVED_CHANNELS: + case ActionTypes.RECEIVED_CHANNELS: ChannelStore.storeChannels(action.channels); ChannelStore.storeChannelMembers(action.members); currentId = ChannelStore.getCurrentId(); @@ -315,7 +315,7 @@ ChannelStore.dispatchToken = AppDispatcher.register((payload) => { ChannelStore.emitChange(); break; - case ActionTypes.RECIEVED_CHANNEL: + case ActionTypes.RECEIVED_CHANNEL: ChannelStore.pStoreChannel(action.channel); if (action.member) { ChannelStore.pStoreChannelMember(action.member); @@ -328,12 +328,12 @@ ChannelStore.dispatchToken = AppDispatcher.register((payload) => { ChannelStore.emitChange(); break; - case ActionTypes.RECIEVED_MORE_CHANNELS: + case ActionTypes.RECEIVED_MORE_CHANNELS: ChannelStore.storeMoreChannels(action.channels); ChannelStore.emitMoreChange(); break; - case ActionTypes.RECIEVED_CHANNEL_EXTRA_INFO: + case ActionTypes.RECEIVED_CHANNEL_EXTRA_INFO: var extraInfos = ChannelStore.getExtraInfos(); extraInfos[action.extra_info.id] = action.extra_info; ChannelStore.storeExtraInfos(extraInfos); diff --git a/web/react/stores/error_store.jsx b/web/react/stores/error_store.jsx index ed46d6b68..5afcefd12 100644 --- a/web/react/stores/error_store.jsx +++ b/web/react/stores/error_store.jsx @@ -57,7 +57,7 @@ var ErrorStore = new ErrorStoreClass(); ErrorStore.dispatchToken = AppDispatcher.register((payload) => { var action = payload.action; switch (action.type) { - case ActionTypes.RECIEVED_ERROR: + case ActionTypes.RECEIVED_ERROR: ErrorStore.storeLastError(action.err); ErrorStore.emitChange(); break; diff --git a/web/react/stores/file_store.jsx b/web/react/stores/file_store.jsx index ca8c6a96b..6d7e0f354 100644 --- a/web/react/stores/file_store.jsx +++ b/web/react/stores/file_store.jsx @@ -49,7 +49,7 @@ class FileStore extends EventEmitter { const action = payload.action; switch (action.type) { - case ActionTypes.RECIEVED_FILE_INFO: + case ActionTypes.RECEIVED_FILE_INFO: this.setInfo(action.filename, action.info); this.emitChange(action.filename); break; diff --git a/web/react/stores/post_store.jsx b/web/react/stores/post_store.jsx index 8ff58f685..b5bb93576 100644 --- a/web/react/stores/post_store.jsx +++ b/web/react/stores/post_store.jsx @@ -376,15 +376,16 @@ class PostStoreClass extends EventEmitter { } storePendingPost(post) { - post.state = Constants.POST_LOADING; + const copyPost = JSON.parse(JSON.stringify(post)); + copyPost.state = Constants.POST_LOADING; - const postList = makePostListNonNull(this.getPendingPosts(post.channel_id)); + const postList = makePostListNonNull(this.getPendingPosts(copyPost.channel_id)); - postList.posts[post.pending_post_id] = post; - postList.order.unshift(post.pending_post_id); + postList.posts[copyPost.pending_post_id] = copyPost; + postList.order.unshift(copyPost.pending_post_id); - this.makePostsInfo(post.channel_id); - this.postsInfo[post.channel_id].pendingPosts = postList; + this.makePostsInfo(copyPost.channel_id); + this.postsInfo[copyPost.channel_id].pendingPosts = postList; this.emitChange(); } @@ -410,14 +411,15 @@ class PostStoreClass extends EventEmitter { } updatePendingPost(post) { - const postList = makePostListNonNull(this.getPendingPosts(post.channel_id)); + const copyPost = JSON.parse(JSON.stringify(post)); + const postList = makePostListNonNull(this.getPendingPosts(copyPost.channel_id)); - if (postList.order.indexOf(post.pending_post_id) === -1) { + if (postList.order.indexOf(copyPost.pending_post_id) === -1) { return; } - postList.posts[post.pending_post_id] = post; - this.postsInfo[post.channel_id].pendingPosts = postList; + postList.posts[copyPost.pending_post_id] = copyPost; + this.postsInfo[copyPost.channel_id].pendingPosts = postList; this.emitChange(); } @@ -540,23 +542,23 @@ PostStore.dispatchToken = AppDispatcher.register((payload) => { var action = payload.action; switch (action.type) { - case ActionTypes.RECIEVED_POSTS: { + case ActionTypes.RECEIVED_POSTS: { const id = PostStore.currentFocusedPostId == null ? action.id : PostStore.currentFocusedPostId; PostStore.checkBounds(id, action.numRequested, makePostListNonNull(action.post_list), action.before); PostStore.storePosts(id, makePostListNonNull(action.post_list)); PostStore.emitChange(); break; } - case ActionTypes.RECIEVED_FOCUSED_POST: + case ActionTypes.RECEIVED_FOCUSED_POST: PostStore.clearChannelVisibility(action.postId, false); PostStore.storeFocusedPost(action.postId, makePostListNonNull(action.post_list)); PostStore.emitChange(); break; - case ActionTypes.RECIEVED_POST: + case ActionTypes.RECEIVED_POST: PostStore.storePost(action.post); PostStore.emitChange(); break; - case ActionTypes.RECIEVED_EDIT_POST: + case ActionTypes.RECEIVED_EDIT_POST: PostStore.emitEditPost(action); PostStore.emitChange(); break; @@ -577,7 +579,7 @@ PostStore.dispatchToken = AppDispatcher.register((payload) => { PostStore.removePost(action.post); PostStore.emitChange(); break; - case ActionTypes.RECIEVED_POST_SELECTED: + case ActionTypes.RECEIVED_POST_SELECTED: PostStore.storeSelectedPost(action.post_list); PostStore.emitSelectedPostChange(action.from_search); break; diff --git a/web/react/stores/preference_store.jsx b/web/react/stores/preference_store.jsx index 7ecaf0a95..30f5468c2 100644 --- a/web/react/stores/preference_store.jsx +++ b/web/react/stores/preference_store.jsx @@ -159,13 +159,13 @@ class PreferenceStoreClass extends EventEmitter { const action = payload.action; switch (action.type) { - case ActionTypes.RECIEVED_PREFERENCE: { + case ActionTypes.RECEIVED_PREFERENCE: { const preference = action.preference; this.setPreference(preference.category, preference.name, preference.value); this.emitChange(); break; } - case ActionTypes.RECIEVED_PREFERENCES: + case ActionTypes.RECEIVED_PREFERENCES: this.setPreferences(action.preferences); this.emitChange(); break; diff --git a/web/react/stores/search_store.jsx b/web/react/stores/search_store.jsx index f932c379a..549f355ef 100644 --- a/web/react/stores/search_store.jsx +++ b/web/react/stores/search_store.jsx @@ -119,11 +119,11 @@ SearchStore.dispatchToken = AppDispatcher.register((payload) => { var action = payload.action; switch (action.type) { - case ActionTypes.RECIEVED_SEARCH: + case ActionTypes.RECEIVED_SEARCH: SearchStore.storeSearchResults(action.results, action.is_mention_search); SearchStore.emitSearchChange(); break; - case ActionTypes.RECIEVED_SEARCH_TERM: + case ActionTypes.RECEIVED_SEARCH_TERM: SearchStore.storeSearchTerm(action.term); SearchStore.emitSearchTermChange(action.do_search, action.is_mention_search); break; diff --git a/web/react/stores/team_store.jsx b/web/react/stores/team_store.jsx index 2d518d9e7..7a1a2ef42 100644 --- a/web/react/stores/team_store.jsx +++ b/web/react/stores/team_store.jsx @@ -116,7 +116,7 @@ TeamStore.dispatchToken = AppDispatcher.register((payload) => { var action = payload.action; switch (action.type) { - case ActionTypes.RECIEVED_TEAM: + case ActionTypes.RECEIVED_TEAM: TeamStore.saveTeam(action.team); TeamStore.emitChange(); break; diff --git a/web/react/stores/user_store.jsx b/web/react/stores/user_store.jsx index b97a0d87b..dd60e166f 100644 --- a/web/react/stores/user_store.jsx +++ b/web/react/stores/user_store.jsx @@ -336,27 +336,27 @@ UserStore.dispatchToken = AppDispatcher.register((payload) => { var action = payload.action; switch (action.type) { - case ActionTypes.RECIEVED_PROFILES: + case ActionTypes.RECEIVED_PROFILES: UserStore.saveProfiles(action.profiles); UserStore.emitChange(); break; - case ActionTypes.RECIEVED_ME: + case ActionTypes.RECEIVED_ME: UserStore.setCurrentUser(action.me); UserStore.emitChange(action.me.id); break; - case ActionTypes.RECIEVED_SESSIONS: + case ActionTypes.RECEIVED_SESSIONS: UserStore.setSessions(action.sessions); UserStore.emitSessionsChange(); break; - case ActionTypes.RECIEVED_AUDITS: + case ActionTypes.RECEIVED_AUDITS: UserStore.setAudits(action.audits); UserStore.emitAuditsChange(); break; - case ActionTypes.RECIEVED_TEAMS: + case ActionTypes.RECEIVED_TEAMS: UserStore.setTeams(action.teams); UserStore.emitTeamsChange(); break; - case ActionTypes.RECIEVED_STATUSES: + case ActionTypes.RECEIVED_STATUSES: UserStore.pSetStatuses(action.statuses); UserStore.emitStatusesChange(); break; diff --git a/web/react/utils/async_client.jsx b/web/react/utils/async_client.jsx index c5957e8cc..c8676f45d 100644 --- a/web/react/utils/async_client.jsx +++ b/web/react/utils/async_client.jsx @@ -5,6 +5,7 @@ import * as client from './client.jsx'; import AppDispatcher from '../dispatcher/app_dispatcher.jsx'; import BrowserStore from '../stores/browser_store.jsx'; import ChannelStore from '../stores/channel_store.jsx'; +import PreferenceStore from '../stores/preference_store.jsx'; import PostStore from '../stores/post_store.jsx'; import UserStore from '../stores/user_store.jsx'; import * as utils from './utils.jsx'; @@ -17,7 +18,7 @@ var callTracker = {}; export function dispatchError(err, method) { AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_ERROR, + type: ActionTypes.RECEIVED_ERROR, err: err, method: method }); @@ -70,7 +71,7 @@ export function getChannels(checkVersion) { } AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_CHANNELS, + type: ActionTypes.RECEIVED_CHANNELS, channels: data.channels, members: data.members }); @@ -98,7 +99,7 @@ export function getChannel(id) { } AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_CHANNEL, + type: ActionTypes.RECEIVED_CHANNEL, channel: data.channel, member: data.member }); @@ -155,7 +156,7 @@ export function getMoreChannels(force) { } AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_MORE_CHANNELS, + type: ActionTypes.RECEIVED_MORE_CHANNELS, channels: data.channels, members: data.members }); @@ -194,7 +195,7 @@ export function getChannelExtraInfo(id, memberLimit) { } AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_CHANNEL_EXTRA_INFO, + type: ActionTypes.RECEIVED_CHANNEL_EXTRA_INFO, extra_info: data }); }, @@ -221,7 +222,7 @@ export function getProfiles() { } AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_PROFILES, + type: ActionTypes.RECEIVED_PROFILES, profiles: data }); }, @@ -248,7 +249,7 @@ export function getSessions() { } AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_SESSIONS, + type: ActionTypes.RECEIVED_SESSIONS, sessions: data }); }, @@ -275,7 +276,7 @@ export function getAudits() { } AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_AUDITS, + type: ActionTypes.RECEIVED_AUDITS, audits: data }); }, @@ -301,7 +302,7 @@ export function getLogs() { } AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_LOGS, + type: ActionTypes.RECEIVED_LOGS, logs: data }); }, @@ -327,7 +328,7 @@ export function getServerAudits() { } AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_SERVER_AUDITS, + type: ActionTypes.RECEIVED_SERVER_AUDITS, audits: data }); }, @@ -353,7 +354,7 @@ export function getConfig() { } AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_CONFIG, + type: ActionTypes.RECEIVED_CONFIG, config: data }); }, @@ -379,7 +380,7 @@ export function getAllTeams() { } AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_ALL_TEAMS, + type: ActionTypes.RECEIVED_ALL_TEAMS, teams: data }); }, @@ -408,7 +409,7 @@ export function findTeams(email) { } AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_TEAMS, + type: ActionTypes.RECEIVED_TEAMS, teams: data }); }, @@ -436,7 +437,7 @@ export function search(terms) { } AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_SEARCH, + type: ActionTypes.RECEIVED_SEARCH, results: data }); }, @@ -488,7 +489,7 @@ export function getPostsPage(id, maxPosts) { } AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_POSTS, + type: ActionTypes.RECEIVED_POSTS, id: channelId, before: true, numRequested: numPosts, @@ -538,7 +539,7 @@ export function getPosts(id) { } AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_POSTS, + type: ActionTypes.RECEIVED_POSTS, id: channelId, before: true, numRequested: Constants.POST_CHUNK_SIZE, @@ -577,7 +578,7 @@ export function getPostsBefore(postId, offset, numPost) { } AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_POSTS, + type: ActionTypes.RECEIVED_POSTS, id: channelId, before: true, numRequested: numPost, @@ -616,7 +617,7 @@ export function getPostsAfter(postId, offset, numPost) { } AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_POSTS, + type: ActionTypes.RECEIVED_POSTS, id: channelId, before: false, numRequested: numPost, @@ -649,7 +650,7 @@ export function getMe() { } AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_ME, + type: ActionTypes.RECEIVED_ME, me: data }); }, @@ -661,13 +662,12 @@ export function getMe() { } export function getStatuses() { - const directChannels = ChannelStore.getAll().filter((channel) => channel.type === Constants.DM_CHANNEL); + const preferences = PreferenceStore.getCategory(Constants.Preferences.CATEGORY_DIRECT_CHANNEL_SHOW); const teammateIds = []; - for (var i = 0; i < directChannels.length; i++) { - const teammate = utils.getDirectTeammate(directChannels[i].id); - if (teammate) { - teammateIds.push(teammate.id); + for (const preference of preferences) { + if (preference.value === 'true') { + teammateIds.push(preference.name); } } @@ -685,7 +685,7 @@ export function getStatuses() { } AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_STATUSES, + type: ActionTypes.RECEIVED_STATUSES, statuses: data }); }, @@ -711,7 +711,7 @@ export function getMyTeam() { } AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_TEAM, + type: ActionTypes.RECEIVED_TEAM, team: data }); }, @@ -737,7 +737,7 @@ export function getAllPreferences() { } AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_PREFERENCES, + type: ActionTypes.RECEIVED_PREFERENCES, preferences: data }); }, @@ -754,7 +754,7 @@ export function savePreferences(preferences, success, error) { (data, textStatus, xhr) => { if (xhr.status !== 304) { AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_PREFERENCES, + type: ActionTypes.RECEIVED_PREFERENCES, preferences }); } @@ -779,13 +779,19 @@ export function getSuggestedCommands(command, suggestionId, component) { var matches = []; data.forEach((cmd) => { if (('/' + cmd.trigger).indexOf(command) === 0) { + let s = '/' + cmd.trigger; + if (cmd.auto_complete_hint && cmd.auto_complete_hint.length !== 0) { + s += ' ' + cmd.auto_complete_hint; + } matches.push({ - suggestion: '/' + cmd.trigger + ' ' + cmd.auto_complete_hint, + suggestion: s, description: cmd.auto_complete_desc }); } }); + matches = matches.sort((a, b) => a.suggestion.localeCompare(b.suggestion)); + // pull out the suggested commands from the returned data const terms = matches.map((suggestion) => suggestion.suggestion); @@ -821,7 +827,7 @@ export function getFileInfo(filename) { callTracker[callName] = 0; AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_FILE_INFO, + type: ActionTypes.RECEIVED_FILE_INFO, filename, info: data }); diff --git a/web/react/utils/channel_intro_messages.jsx b/web/react/utils/channel_intro_messages.jsx index 69e08f143..1aca0467e 100644 --- a/web/react/utils/channel_intro_messages.jsx +++ b/web/react/utils/channel_intro_messages.jsx @@ -128,7 +128,7 @@ export function createDefaultIntroMessage(channel) { <div className='channel-intro'> <FormattedHTMLMessage id='intro_messages.default' - defaultMessage="<h4 class='channel-intro__title'>Beginning of {display_name}</h4><p class='channel-intro__content'><strong>Welcome to {display_name}!'</strong><br/><br/>This is the first channel teammates see when they sign up - use it for posting updates everyone needs to know.</p>" + defaultMessage="<h4 class='channel-intro__title'>Beginning of {display_name}</h4><p class='channel-intro__content'><strong>Welcome to {display_name}!</strong><br/><br/>This is the first channel teammates see when they sign up - use it for posting updates everyone needs to know.</p>" values={{ display_name: channel.display_name }} diff --git a/web/react/utils/constants.jsx b/web/react/utils/constants.jsx index d78776aa3..b1e84202d 100644 --- a/web/react/utils/constants.jsx +++ b/web/react/utils/constants.jsx @@ -5,7 +5,7 @@ import keyMirror from 'keymirror'; export default { ActionTypes: keyMirror({ - RECIEVED_ERROR: null, + RECEIVED_ERROR: null, CLICK_CHANNEL: null, CREATE_CHANNEL: null, @@ -14,40 +14,40 @@ export default { POST_DELETED: null, REMOVE_POST: null, - RECIEVED_CHANNELS: null, - RECIEVED_CHANNEL: null, - RECIEVED_MORE_CHANNELS: null, - RECIEVED_CHANNEL_EXTRA_INFO: null, + RECEIVED_CHANNELS: null, + RECEIVED_CHANNEL: null, + RECEIVED_MORE_CHANNELS: null, + RECEIVED_CHANNEL_EXTRA_INFO: null, FOCUS_POST: null, - RECIEVED_POSTS: null, - RECIEVED_FOCUSED_POST: null, - RECIEVED_POST: null, - RECIEVED_EDIT_POST: null, - RECIEVED_SEARCH: null, - RECIEVED_SEARCH_TERM: null, - RECIEVED_POST_SELECTED: null, - RECIEVED_MENTION_DATA: null, - RECIEVED_ADD_MENTION: null, + RECEIVED_POSTS: null, + RECEIVED_FOCUSED_POST: null, + RECEIVED_POST: null, + RECEIVED_EDIT_POST: null, + RECEIVED_SEARCH: null, + RECEIVED_SEARCH_TERM: null, + RECEIVED_POST_SELECTED: null, + RECEIVED_MENTION_DATA: null, + RECEIVED_ADD_MENTION: null, - RECIEVED_PROFILES: null, - RECIEVED_ME: null, - RECIEVED_SESSIONS: null, - RECIEVED_AUDITS: null, - RECIEVED_TEAMS: null, - RECIEVED_STATUSES: null, - RECIEVED_PREFERENCE: null, - RECIEVED_PREFERENCES: null, - RECIEVED_FILE_INFO: null, + RECEIVED_PROFILES: null, + RECEIVED_ME: null, + RECEIVED_SESSIONS: null, + RECEIVED_AUDITS: null, + RECEIVED_TEAMS: null, + RECEIVED_STATUSES: null, + RECEIVED_PREFERENCE: null, + RECEIVED_PREFERENCES: null, + RECEIVED_FILE_INFO: null, - RECIEVED_MSG: null, + RECEIVED_MSG: null, - RECIEVED_TEAM: null, + RECEIVED_TEAM: null, - RECIEVED_CONFIG: null, - RECIEVED_LOGS: null, - RECIEVED_SERVER_AUDITS: null, - RECIEVED_ALL_TEAMS: null, + RECEIVED_CONFIG: null, + RECEIVED_LOGS: null, + RECEIVED_SERVER_AUDITS: null, + RECEIVED_ALL_TEAMS: null, SHOW_SEARCH: null, @@ -173,6 +173,7 @@ export default { MENU_ICON: "<svg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px'width='4px' height='16px' viewBox='0 0 8 32' enable-background='new 0 0 8 32' xml:space='preserve'> <g> <circle cx='4' cy='4.062' r='4'/> <circle cx='4' cy='16' r='4'/> <circle cx='4' cy='28' r='4'/> </g> </svg>", COMMENT_ICON: "<svg version='1.1' id='Layer_2' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px'width='15px' height='15px' viewBox='1 1.5 15 15' enable-background='new 1 1.5 15 15' xml:space='preserve'> <g> <g> <path fill='#211B1B' d='M14,1.5H3c-1.104,0-2,0.896-2,2v8c0,1.104,0.896,2,2,2h1.628l1.884,3l1.866-3H14c1.104,0,2-0.896,2-2v-8 C16,2.396,15.104,1.5,14,1.5z M15,11.5c0,0.553-0.447,1-1,1H8l-1.493,2l-1.504-1.991L5,12.5H3c-0.552,0-1-0.447-1-1v-8 c0-0.552,0.448-1,1-1h11c0.553,0,1,0.448,1,1V11.5z'/> </g> </g> </svg>", REPLY_ICON: "<svg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px'viewBox='-158 242 18 18' style='enable-background:new -158 242 18 18;' xml:space='preserve'> <path d='M-142.2,252.6c-2-3-4.8-4.7-8.3-4.8v-3.3c0-0.2-0.1-0.3-0.2-0.3s-0.3,0-0.4,0.1l-6.9,6.2c-0.1,0.1-0.1,0.2-0.1,0.3 c0,0.1,0,0.2,0.1,0.3l6.9,6.4c0.1,0.1,0.3,0.1,0.4,0.1c0.1-0.1,0.2-0.2,0.2-0.4v-3.8c4.2,0,7.4,0.4,9.6,4.4c0.1,0.1,0.2,0.2,0.3,0.2 c0,0,0.1,0,0.1,0c0.2-0.1,0.3-0.3,0.2-0.4C-140.2,257.3-140.6,255-142.2,252.6z M-150.8,252.5c-0.2,0-0.4,0.2-0.4,0.4v3.3l-6-5.5 l6-5.3v2.8c0,0.2,0.2,0.4,0.4,0.4c3.3,0,6,1.5,8,4.5c0.5,0.8,0.9,1.6,1.2,2.3C-144,252.8-147.1,252.5-150.8,252.5z'/> </svg>", + SCROLL_BOTTOM_ICON: "<svg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px'viewBox='-239 239 21 23' style='enable-background:new -239 239 21 23;' xml:space='preserve'> <path d='M-239,241.4l2.4-2.4l8.1,8.2l8.1-8.2l2.4,2.4l-10.5,10.6L-239,241.4z M-228.5,257.2l8.1-8.2l2.4,2.4l-10.5,10.6l-10.5-10.6 l2.4-2.4L-228.5,257.2z'/> </svg>", UPDATE_TYPING_MS: 5000, THEMES: { default: { @@ -456,10 +457,6 @@ export default { EMBED_PREVIEW: { label: 'embed_preview', description: 'Show preview snippet of links below message' - }, - LOC_PREVIEW: { - label: 'loc_preview', - description: 'Show user language in display settings' } }, OVERLAY_TIME_DELAY: 400, diff --git a/web/react/utils/utils.jsx b/web/react/utils/utils.jsx index 376053792..e2a5b9620 100644 --- a/web/react/utils/utils.jsx +++ b/web/react/utils/utils.jsx @@ -512,7 +512,7 @@ export function insertHtmlEntities(text) { export function searchForTerm(term) { AppDispatcher.handleServerAction({ - type: ActionTypes.RECIEVED_SEARCH_TERM, + type: ActionTypes.RECEIVED_SEARCH_TERM, term: term, do_search: true }); @@ -702,6 +702,7 @@ export function applyTheme(theme) { } if (theme.centerChannelColor) { + changeCss('.post-list__arrows', 'fill:' + changeOpacity(theme.centerChannelColor, 0.3), 1); changeCss('.sidebar--left, .sidebar--right .sidebar--right__header', 'border-color:' + changeOpacity(theme.centerChannelColor, 0.2), 1); changeCss('.app__content, .post-create__container .post-create-body .btn-file, .post-create__container .post-create-footer .msg-typing, .command-name, .modal .modal-content, .dropdown-menu, .popover, .mentions-name, .tip-overlay', 'color:' + theme.centerChannelColor, 1); changeCss('#archive-link-home', 'background:' + changeOpacity(theme.centerChannelColor, 0.15), 1); @@ -1395,7 +1396,7 @@ export function languages() { }, { value: 'es', - name: 'Español' + name: 'Español (Beta)' } ] ); |