summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris <ccbrown112@gmail.com>2017-07-04 18:26:31 -0700
committerSaturnino Abril <saturnino.abril@gmail.com>2017-07-05 09:26:31 +0800
commit5bd60a4d1ea36839e7bdc8cc65f9038ac3732d5f (patch)
treef2b421626d32c86be119c81cf84cd5420d9f2033
parent8f8a978e84ec8bbeac22928e6112bc697fa7176d (diff)
downloadchat-5bd60a4d1ea36839e7bdc8cc65f9038ac3732d5f.tar.gz
chat-5bd60a4d1ea36839e7bdc8cc65f9038ac3732d5f.tar.bz2
chat-5bd60a4d1ea36839e7bdc8cc65f9038ac3732d5f.zip
add /search command (#6741)
-rw-r--r--api/command_search_test.go13
-rw-r--r--app/command_search.go42
-rw-r--r--i18n/en.json16
-rw-r--r--webapp/actions/channel_actions.jsx4
4 files changed, 75 insertions, 0 deletions
diff --git a/api/command_search_test.go b/api/command_search_test.go
new file mode 100644
index 000000000..1ea2e6f6b
--- /dev/null
+++ b/api/command_search_test.go
@@ -0,0 +1,13 @@
+// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+package api
+
+import (
+ "testing"
+)
+
+func TestSearchCommand(t *testing.T) {
+ th := Setup().InitBasic()
+ th.BasicClient.Must(th.BasicClient.Command(th.BasicChannel.Id, "/search"))
+}
diff --git a/app/command_search.go b/app/command_search.go
new file mode 100644
index 000000000..2e35dccf4
--- /dev/null
+++ b/app/command_search.go
@@ -0,0 +1,42 @@
+// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+package app
+
+import (
+ "github.com/mattermost/platform/model"
+ goi18n "github.com/nicksnyder/go-i18n/i18n"
+)
+
+type SearchProvider struct {
+}
+
+const (
+ CMD_SEARCH = "search"
+)
+
+func init() {
+ RegisterCommandProvider(&SearchProvider{})
+}
+
+func (search *SearchProvider) GetTrigger() string {
+ return CMD_SEARCH
+}
+
+func (search *SearchProvider) GetCommand(T goi18n.TranslateFunc) *model.Command {
+ return &model.Command{
+ Trigger: CMD_SEARCH,
+ AutoComplete: true,
+ AutoCompleteDesc: T("api.command_search.desc"),
+ AutoCompleteHint: T("api.command_search.hint"),
+ DisplayName: T("api.command_search.name"),
+ }
+}
+
+func (search *SearchProvider) DoCommand(args *model.CommandArgs, message string) *model.CommandResponse {
+ // This command is handled client-side and shouldn't hit the server.
+ return &model.CommandResponse{
+ Text: args.T("api.command_search.unsupported.app_error"),
+ ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL,
+ }
+}
diff --git a/i18n/en.json b/i18n/en.json
index 640ed93ea..2e2efc52d 100644
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -700,6 +700,22 @@
"translation": "open"
},
{
+ "id": "api.command_search.desc",
+ "translation": "Search text in messages"
+ },
+ {
+ "id": "api.command_search.hint",
+ "translation": "[text]"
+ },
+ {
+ "id": "api.command_search.name",
+ "translation": "search"
+ },
+ {
+ "id": "api.command_search.unsupported.app_error",
+ "translation": "The search command is not supported on your device"
+ },
+ {
"id": "api.command_settings.desc",
"translation": "Open the Account Settings dialog"
},
diff --git a/webapp/actions/channel_actions.jsx b/webapp/actions/channel_actions.jsx
index 887aca030..6e529d332 100644
--- a/webapp/actions/channel_actions.jsx
+++ b/webapp/actions/channel_actions.jsx
@@ -8,6 +8,7 @@ import * as ChannelUtils from 'utils/channel_utils.jsx';
import PreferenceStore from 'stores/preference_store.jsx';
import * as GlobalActions from 'actions/global_actions.jsx';
+import * as PostActions from 'actions/post_actions.jsx';
import {loadProfilesForSidebar, loadNewDMIfNeeded, loadNewGMIfNeeded} from 'actions/user_actions.jsx';
import {trackEvent} from 'actions/diagnostics_actions.jsx';
@@ -57,6 +58,9 @@ export function executeCommand(message, args, success, error) {
msg = cmd + msg.substring(cmdLength, msg.length);
switch (cmd) {
+ case '/search':
+ PostActions.searchForTerm(msg.substring(cmdLength + 1, msg.length));
+ return;
case '/shortcuts':
if (UserAgent.isMobile()) {
const err = {message: Utils.localizeMessage('create_post.shortcutsNotSupported', 'Keyboard shortcuts are not supported on your device')};