summaryrefslogtreecommitdiffstats
path: root/webapp/components/backstage/installed_incoming_webhook.jsx
diff options
context:
space:
mode:
authorHarrison Healey <harrisonmhealey@gmail.com>2016-07-05 11:58:18 -0400
committerJoram Wilander <jwawilander@gmail.com>2016-07-05 11:58:18 -0400
commitdc2f2a800105b77e665ec2a00c6290f35b1a2ba3 (patch)
tree82f23c2e72a7c785f55c2d6c1c35c10c16994918 /webapp/components/backstage/installed_incoming_webhook.jsx
parenta65f1fc266f15eaa8f79541d4d11440c3d356bb6 (diff)
downloadchat-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.jsx131
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>
- );
- }
-}