diff options
author | Harrison Healey <harrisonmhealey@gmail.com> | 2016-07-05 11:58:18 -0400 |
---|---|---|
committer | Joram Wilander <jwawilander@gmail.com> | 2016-07-05 11:58:18 -0400 |
commit | dc2f2a800105b77e665ec2a00c6290f35b1a2ba3 (patch) | |
tree | 82f23c2e72a7c785f55c2d6c1c35c10c16994918 /webapp/components/backstage/installed_incoming_webhook.jsx | |
parent | a65f1fc266f15eaa8f79541d4d11440c3d356bb6 (diff) | |
download | chat-dc2f2a800105b77e665ec2a00c6290f35b1a2ba3.tar.gz chat-dc2f2a800105b77e665ec2a00c6290f35b1a2ba3.tar.bz2 chat-dc2f2a800105b77e665ec2a00c6290f35b1a2ba3.zip |
PLT-3145 Custom Emojis (#3381)
* Reorganized Backstage code to use a view controller and separated it from integrations code
* Renamed InstalledIntegrations component to BackstageList
* Added EmojiList page
* Added AddEmoji page
* Added custom emoji to autocomplete and text formatter
* Moved system emoji to EmojiStore
* Stopped trying to get emoji before logging in
* Rerender posts when emojis change
* Fixed submit handler on backstage pages to properly support enter
* Removed debugging code
* Updated javascript driver
* Fixed unit tests
* Fixed backstage routes
* Added clientside validation to prevent users from creating an emoji with the same name as a system one
* Fixed AddEmoji page to properly redirect when an emoji is created successfully
* Fixed updating emoji list when an emoji is deleted
* Added type prop to BackstageList to properly support using a table for the list
* Added help text to EmojiList
* Fixed backstage on smaller screen sizes
* Disable custom emoji by default
* Improved restrictions on creating emojis
* Fixed non-admin users seeing the option to delete each other's emojis
* Fixing gofmt
* Fixed emoji unit tests
* Fixed trying to get emoji from the server when it's disabled
Diffstat (limited to 'webapp/components/backstage/installed_incoming_webhook.jsx')
-rw-r--r-- | webapp/components/backstage/installed_incoming_webhook.jsx | 131 |
1 files changed, 0 insertions, 131 deletions
diff --git a/webapp/components/backstage/installed_incoming_webhook.jsx b/webapp/components/backstage/installed_incoming_webhook.jsx deleted file mode 100644 index afa6e9958..000000000 --- a/webapp/components/backstage/installed_incoming_webhook.jsx +++ /dev/null @@ -1,131 +0,0 @@ -// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. -// See License.txt for license information. - -import React from 'react'; - -import ChannelStore from 'stores/channel_store.jsx'; -import * as Utils from 'utils/utils.jsx'; - -import {FormattedMessage} from 'react-intl'; - -export default class InstalledIncomingWebhook extends React.Component { - static get propTypes() { - return { - incomingWebhook: React.PropTypes.object.isRequired, - onDelete: React.PropTypes.func.isRequired, - filter: React.PropTypes.string - }; - } - - constructor(props) { - super(props); - - this.handleDelete = this.handleDelete.bind(this); - } - - handleDelete(e) { - e.preventDefault(); - - this.props.onDelete(this.props.incomingWebhook); - } - - matchesFilter(incomingWebhook, channel, filter) { - if (!filter) { - return true; - } - - if (incomingWebhook.display_name.toLowerCase().indexOf(filter) !== -1 || - incomingWebhook.description.toLowerCase().indexOf(filter) !== -1) { - return true; - } - - if (incomingWebhook.channel_id) { - if (channel && channel.name.toLowerCase().indexOf(filter) !== -1) { - return true; - } - } - - return false; - } - - render() { - const incomingWebhook = this.props.incomingWebhook; - const channel = ChannelStore.get(incomingWebhook.channel_id); - - if (!this.matchesFilter(incomingWebhook, channel, this.props.filter)) { - return null; - } - - let displayName; - if (incomingWebhook.display_name) { - displayName = incomingWebhook.display_name; - } else if (channel) { - displayName = channel.display_name; - } else { - displayName = ( - <FormattedMessage - id='installed_incoming_webhooks.unknown_channel' - defaultMessage='A Private Webhook' - /> - ); - } - - let description = null; - if (incomingWebhook.description) { - description = ( - <div className='item-details__row'> - <span className='item-details__description'> - {incomingWebhook.description} - </span> - </div> - ); - } - - return ( - <div className='backstage-list__item'> - <div className='item-details'> - <div className='item-details__row'> - <span className='item-details__name'> - {displayName} - </span> - </div> - {description} - <div className='item-details__row'> - <span className='item-details__url'> - <FormattedMessage - id='installed_integrations.url' - defaultMessage='URL: {url}' - values={{ - url: Utils.getWindowLocationOrigin() + '/hooks/' + incomingWebhook.id - }} - /> - </span> - </div> - <div className='tem-details__row'> - <span className='item-details__creation'> - <FormattedMessage - id='installed_integrations.creation' - defaultMessage='Created by {creator} on {createAt, date, full}' - values={{ - creator: Utils.displayUsername(incomingWebhook.user_id), - createAt: incomingWebhook.create_at - }} - /> - </span> - </div> - </div> - <div className='item-actions'> - <a - href='#' - onClick={this.handleDelete} - > - <FormattedMessage - id='installed_integrations.delete' - defaultMessage='Delete' - /> - </a> - </div> - </div> - ); - } -} |