mirror of
https://github.com/mattermost/mattermost.git
synced 2025-02-25 18:55:24 -06:00
add /search command (#6741)
This commit is contained in:
13
api/command_search_test.go
Normal file
13
api/command_search_test.go
Normal file
@@ -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"))
|
||||
}
|
||||
42
app/command_search.go
Normal file
42
app/command_search.go
Normal file
@@ -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,
|
||||
}
|
||||
}
|
||||
16
i18n/en.json
16
i18n/en.json
@@ -699,6 +699,22 @@
|
||||
"id": "api.command_open.name",
|
||||
"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"
|
||||
|
||||
@@ -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')};
|
||||
|
||||
Reference in New Issue
Block a user