From ea095d6206ad8bb9b1b1ffbf74584669a24f1ca8 Mon Sep 17 00:00:00 2001
From: 94117nl <rttededersixtwo@gmail.com>
Date: Thu, 3 Aug 2017 08:25:07 -0500
Subject: GH-6452 Migrate installed_command.jsx to be pure and use Redux
 (#6903)

* Migrate installed_command.jsx to be pure and use Redux

* Add test for InstalledCommand component

* Fix failing test and typo

* Whoops. Revert back deleted filter

* Add filter test

* Remove commands related code from /stores/integration_store.jsx
---
 .../integrations/components/installed_command.jsx  | 65 ++++++++++++++--------
 1 file changed, 41 insertions(+), 24 deletions(-)

(limited to 'webapp/components/integrations/components/installed_command.jsx')

diff --git a/webapp/components/integrations/components/installed_command.jsx b/webapp/components/integrations/components/installed_command.jsx
index 691ae75fb..1470712b0 100644
--- a/webapp/components/integrations/components/installed_command.jsx
+++ b/webapp/components/integrations/components/installed_command.jsx
@@ -1,43 +1,59 @@
-import PropTypes from 'prop-types';
-
 // Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
 // See License.txt for license information.
 
 import React from 'react';
+import PropTypes from 'prop-types';
 import {Link} from 'react-router';
 import {FormattedMessage} from 'react-intl';
 
 import DeleteIntegration from './delete_integration.jsx';
 
-export default class InstalledCommand extends React.Component {
-    static get propTypes() {
-        return {
-            team: PropTypes.object.isRequired,
-            command: PropTypes.object.isRequired,
-            onRegenToken: PropTypes.func.isRequired,
-            onDelete: PropTypes.func.isRequired,
-            filter: PropTypes.string,
-            creator: PropTypes.object.isRequired,
-            canChange: PropTypes.bool.isRequired
-        };
-    }
-
-    constructor(props) {
-        super(props);
-
-        this.handleRegenToken = this.handleRegenToken.bind(this);
-        this.handleDelete = this.handleDelete.bind(this);
-
-        this.matchesFilter = this.matchesFilter.bind(this);
+export default class InstalledCommand extends React.PureComponent {
+    static propTypes = {
+
+        /**
+        * The team data
+        */
+        team: PropTypes.object.isRequired,
+
+        /**
+        * Installed slash command to display
+        */
+        command: PropTypes.object.isRequired,
+
+        /**
+        * The function to call when Regenerate Token link is clicked
+        */
+        onRegenToken: PropTypes.func.isRequired,
+
+        /**
+        * The function to call when Delete link is clicked
+        */
+        onDelete: PropTypes.func.isRequired,
+
+        /**
+        * Set to filter command, comes from BackstageList
+        */
+        filter: PropTypes.string,
+
+        /**
+        * The creator user data
+        */
+        creator: PropTypes.object.isRequired,
+
+        /**
+        * Set to show edit link
+        */
+        canChange: PropTypes.bool.isRequired
     }
 
-    handleRegenToken(e) {
+    handleRegenToken = (e) => {
         e.preventDefault();
 
         this.props.onRegenToken(this.props.command);
     }
 
-    handleDelete() {
+    handleDelete = () => {
         this.props.onDelete(this.props.command);
     }
 
@@ -60,6 +76,7 @@ export default class InstalledCommand extends React.Component {
         }
 
         let name;
+
         if (command.display_name) {
             name = command.display_name;
         } else {
-- 
cgit v1.2.3-1-g7c22

