From 0c449ba5c98b4200ac255e2e6b70b754452a861e Mon Sep 17 00:00:00 2001
From: hmhealey <harrisonmhealey@gmail.com>
Date: Tue, 1 Dec 2015 10:54:53 -0500
Subject: Replaced CommandList with the new suggestion components

---
 web/react/components/command_provider.jsx | 68 +++++++++++++++++++++++++++++++
 1 file changed, 68 insertions(+)
 create mode 100644 web/react/components/command_provider.jsx

(limited to 'web/react/components/command_provider.jsx')

diff --git a/web/react/components/command_provider.jsx b/web/react/components/command_provider.jsx
new file mode 100644
index 000000000..0526e09b1
--- /dev/null
+++ b/web/react/components/command_provider.jsx
@@ -0,0 +1,68 @@
+// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+import AppDispatcher from '../dispatcher/app_dispatcher.jsx';
+import * as Client from '../utils/client.jsx';
+import Constants from '../utils/constants.jsx';
+import SuggestionStore from '../stores/suggestion_store.jsx';
+
+class CommandSuggestion extends React.Component {
+    render() {
+        const {item, isSelection, onClick} = this.props;
+
+        let className = 'command-name';
+        if (isSelection) {
+            className += ' command--selected';
+        }
+
+        return (
+            <div
+                className={className}
+                onClick={onClick}
+            >
+                <div className='command__title'>
+                    <string>{item.suggestion}</string>
+                </div>
+                <div className='command__desc'>
+                    {item.description}
+                </div>
+            </div>
+        );
+    }
+}
+
+CommandSuggestion.propTypes = {
+    item: React.PropTypes.object.isRequired,
+    isSelection: React.PropTypes.bool,
+    onClick: React.PropTypes.func
+};
+
+export default class CommandProvider {
+    handlePretextChanged(suggestionId, pretext) {
+        if (pretext.startsWith('/')) {
+            SuggestionStore.setMatchedPretext(suggestionId, pretext);
+
+            Client.executeCommand(
+                '',
+                pretext,
+                true,
+                (data) => {
+                    this.handleCommandsReceived(suggestionId, pretext, data.suggestions);
+                }
+            );
+        }
+    }
+
+    handleCommandsReceived(suggestionId, matchedPretext, commandSuggestions) {
+        const terms = commandSuggestions.map(({suggestion}) => suggestion);
+
+        AppDispatcher.handleServerAction({
+            type: Constants.ActionTypes.SUGGESTION_RECEIVED_SUGGESTIONS,
+            id: suggestionId,
+            matchedPretext,
+            terms,
+            items: commandSuggestions,
+            component: CommandSuggestion
+        });
+    }
+}
-- 
cgit v1.2.3-1-g7c22

