diff options
author | Harrison Healey <harrisonmhealey@gmail.com> | 2016-04-05 09:29:01 -0400 |
---|---|---|
committer | Christopher Speller <crspeller@gmail.com> | 2016-04-05 09:29:01 -0400 |
commit | b3edd32aee47a0b123870de58664600acc17087b (patch) | |
tree | 41840177672480ff428f279437a5a08a6eccaeb6 /webapp/components/backstage/installed_command.jsx | |
parent | c12d997f248c143b7746d07a3c2ce9b58a3ecd5e (diff) | |
download | chat-b3edd32aee47a0b123870de58664600acc17087b.tar.gz chat-b3edd32aee47a0b123870de58664600acc17087b.tar.bz2 chat-b3edd32aee47a0b123870de58664600acc17087b.zip |
PLT-1750 Moved slash commands to backstage
* Added slash commands to InstalledIntegrations page
* Reset installed integration type filter if there is no longer any integrations of the selected type
* Added pages to backstage to add slash commands
* Cleaned up internationalization for slash commands
* Added ability to regen slash command tokens from backstage
* Removed Integrations tab from UserSettings
Diffstat (limited to 'webapp/components/backstage/installed_command.jsx')
-rw-r--r-- | webapp/components/backstage/installed_command.jsx | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/webapp/components/backstage/installed_command.jsx b/webapp/components/backstage/installed_command.jsx new file mode 100644 index 000000000..51adce160 --- /dev/null +++ b/webapp/components/backstage/installed_command.jsx @@ -0,0 +1,97 @@ +// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +import React from 'react'; + +import * as Utils from 'utils/utils.jsx'; + +import {FormattedMessage} from 'react-intl'; + +export default class InstalledCommand extends React.Component { + static get propTypes() { + return { + command: React.PropTypes.object.isRequired, + onRegenToken: React.PropTypes.func.isRequired, + onDelete: React.PropTypes.func.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.command); + } + + handleDelete(e) { + e.preventDefault(); + + this.props.onDelete(this.props.command); + } + + render() { + const command = this.props.command; + + return ( + <div className='backstage-list__item'> + <div className='item-details'> + <div className='item-details__row'> + <span className='item-details__name'> + {command.display_name} + </span> + <span className='item-details__type'> + <FormattedMessage + id='installed_integrations.commandType' + defaultMessage='(Slash Command)' + /> + </span> + </div> + <div className='item-details__row'> + <span className='item-details__description'> + {command.description} + </span> + </div> + <div className='item-details__row'> + <span className='item-details__creation'> + <FormattedMessage + id='installed_integrations.creation' + defaultMessage='Created by {creator} on {createAt, date, full}' + values={{ + creator: Utils.displayUsername(command.creator_Id), + createAt: command.create_at + }} + /> + </span> + </div> + </div> + <div className='item-actions'> + <a + href='#' + onClick={this.handleRegenToken} + > + <FormattedMessage + id='installed_integrations.regenToken' + defaultMessage='Regen Token' + /> + </a> + {' - '} + <a + href='#' + onClick={this.handleDelete} + > + <FormattedMessage + id='installed_integrations.delete' + defaultMessage='Delete' + /> + </a> + </div> + </div> + ); + } +} |