// 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 {FormattedMessage} from 'react-intl'; import {Link} from 'react-router'; import DeleteIntegration from './delete_integration.jsx'; export default class InstalledOutgoingWebhook extends React.Component { static get propTypes() { return { outgoingWebhook: React.PropTypes.object.isRequired, onRegenToken: React.PropTypes.func.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.handleRegenToken = this.handleRegenToken.bind(this); this.handleDelete = this.handleDelete.bind(this); } handleRegenToken(e) { e.preventDefault(); this.props.onRegenToken(this.props.outgoingWebhook); } handleDelete() { this.props.onDelete(this.props.outgoingWebhook); } matchesFilter(outgoingWebhook, channel, filter) { if (!filter) { return true; } if (outgoingWebhook.display_name.toLowerCase().indexOf(filter) !== -1 || outgoingWebhook.description.toLowerCase().indexOf(filter) !== -1) { return true; } for (const trigger of outgoingWebhook.trigger_words) { if (trigger.toLowerCase().indexOf(filter) !== -1) { return true; } } if (channel) { if (channel && channel.name.toLowerCase().indexOf(filter) !== -1) { return true; } } return false; } render() { const outgoingWebhook = this.props.outgoingWebhook; const channel = ChannelStore.get(outgoingWebhook.channel_id); const filter = this.props.filter ? this.props.filter.toLowerCase() : ''; const triggerWordsFull = 0; const triggerWordsStartsWith = 1; if (!this.matchesFilter(outgoingWebhook, channel, filter)) { return null; } let displayName; if (outgoingWebhook.display_name) { displayName = outgoingWebhook.display_name; } else if (channel) { displayName = channel.display_name; } else { displayName = ( ); } let description = null; if (outgoingWebhook.description) { description = (
{outgoingWebhook.description}
); } let triggerWords = null; if (outgoingWebhook.trigger_words && outgoingWebhook.trigger_words.length > 0) { triggerWords = (
); } const urls = (
); let triggerWhen; if (outgoingWebhook.trigger_when === triggerWordsFull) { triggerWhen = ( ); } else if (outgoingWebhook.trigger_when === triggerWordsStartsWith) { triggerWhen = ( ); } let actions = null; if (this.props.canChange) { actions = (
{' - '} {' - '}
); } return (
{displayName}
{description}
{triggerWords}
{urls}
{actions}
); } }