summaryrefslogtreecommitdiffstats
path: root/web/react/components/command_provider.jsx
diff options
context:
space:
mode:
authorhmhealey <harrisonmhealey@gmail.com>2015-12-01 10:54:53 -0500
committerhmhealey <harrisonmhealey@gmail.com>2015-12-01 16:27:22 -0500
commit0c449ba5c98b4200ac255e2e6b70b754452a861e (patch)
tree9f52f450c8f9ae28c51246cfe3c2fb8da8303eca /web/react/components/command_provider.jsx
parent713115be51cbc20e90be2153772e6f184ce7c76d (diff)
downloadchat-0c449ba5c98b4200ac255e2e6b70b754452a861e.tar.gz
chat-0c449ba5c98b4200ac255e2e6b70b754452a861e.tar.bz2
chat-0c449ba5c98b4200ac255e2e6b70b754452a861e.zip
Replaced CommandList with the new suggestion components
Diffstat (limited to 'web/react/components/command_provider.jsx')
-rw-r--r--web/react/components/command_provider.jsx68
1 files changed, 68 insertions, 0 deletions
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
+ });
+ }
+}