// 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 += ' suggestion--selected'; } return (
{item.suggestion}
{item.description}
); } } 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 }); } }