// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. import React from 'react'; import DeleteIntegration from './delete_integration.jsx'; import ChannelStore from 'stores/channel_store.jsx'; import {getSiteURL} from 'utils/url.jsx'; import {FormattedMessage} from 'react-intl'; import {Link} from 'react-router'; 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, creator: React.PropTypes.object.isRequired, canChange: React.PropTypes.bool.isRequired, team: React.PropTypes.object.isRequired }; } constructor(props) { super(props); this.handleDelete = this.handleDelete.bind(this); } handleDelete() { 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); const filter = this.props.filter ? this.props.filter.toLowerCase() : ''; if (!this.matchesFilter(incomingWebhook, channel, filter)) { return null; } let displayName; if (incomingWebhook.display_name) { displayName = incomingWebhook.display_name; } else if (channel) { displayName = channel.display_name; } else { displayName = ( ); } let description = null; if (incomingWebhook.description) { description = (
{incomingWebhook.description}
); } let actions = null; if (this.props.canChange) { actions = (
{' - '}
); } return (
{displayName}
{description}
{actions}
); } }