mirror of
https://github.com/mattermost/mattermost.git
synced 2025-02-25 18:55:24 -06:00
Fix auto-complete in slash command for shared channel invite (#25524)
* fix auto-complete in slash command for shared channel invite * more providers not implementing AutocompleteDynamicArgProvider --------- Co-authored-by: Mattermost Build <build@mattermost.com>
This commit is contained in:
parent
de99b40e87
commit
af7bc8a4a9
@ -18,7 +18,7 @@ import (
|
||||
|
||||
// AutocompleteDynamicArgProvider dynamically provides auto-completion args for built-in commands.
|
||||
type AutocompleteDynamicArgProvider interface {
|
||||
GetAutoCompleteListItems(a *App, commandArgs *model.CommandArgs, arg *model.AutocompleteArg, parsed, toBeParsed string) ([]model.AutocompleteListItem, error)
|
||||
GetAutoCompleteListItems(c request.CTX, a *App, commandArgs *model.CommandArgs, arg *model.AutocompleteArg, parsed, toBeParsed string) ([]model.AutocompleteListItem, error)
|
||||
}
|
||||
|
||||
// GetSuggestions returns suggestions for user input.
|
||||
@ -243,7 +243,7 @@ func (a *App) getDynamicListArgument(c request.CTX, commandArgs *model.CommandAr
|
||||
dynamicArg := arg.Data.(*model.AutocompleteDynamicListArg)
|
||||
|
||||
if strings.HasPrefix(dynamicArg.FetchURL, "builtin:") {
|
||||
listItems, err := a.getBuiltinDynamicListArgument(commandArgs, arg, parsed, toBeParsed)
|
||||
listItems, err := a.getBuiltinDynamicListArgument(c, commandArgs, arg, parsed, toBeParsed)
|
||||
if err != nil {
|
||||
a.Log().Error("Can't fetch dynamic list arguments for", mlog.String("url", dynamicArg.FetchURL), mlog.Err(err))
|
||||
return false, parsed, toBeParsed, []model.AutocompleteSuggestion{}
|
||||
@ -307,7 +307,7 @@ func parseListItems(items []model.AutocompleteListItem, parsed, toBeParsed strin
|
||||
return true, parsed + toBeParsed, "", suggestions
|
||||
}
|
||||
|
||||
func (a *App) getBuiltinDynamicListArgument(commandArgs *model.CommandArgs, arg *model.AutocompleteArg, parsed, toBeParsed string) ([]model.AutocompleteListItem, error) {
|
||||
func (a *App) getBuiltinDynamicListArgument(c request.CTX, commandArgs *model.CommandArgs, arg *model.AutocompleteArg, parsed, toBeParsed string) ([]model.AutocompleteListItem, error) {
|
||||
dynamicArg := arg.Data.(*model.AutocompleteDynamicListArg)
|
||||
arr := strings.Split(dynamicArg.FetchURL, ":")
|
||||
if len(arr) < 2 {
|
||||
@ -325,5 +325,5 @@ func (a *App) getBuiltinDynamicListArgument(commandArgs *model.CommandArgs, arg
|
||||
return nil, fmt.Errorf("auto-completion not available for built-in command %s", cmdName)
|
||||
}
|
||||
|
||||
return dp.GetAutoCompleteListItems(a, commandArgs, arg, parsed, toBeParsed)
|
||||
return dp.GetAutoCompleteListItems(c, a, commandArgs, arg, parsed, toBeParsed)
|
||||
}
|
||||
|
@ -665,7 +665,7 @@ func (p *testCommandProvider) DoCommand(a *App, c request.CTX, args *model.Comma
|
||||
}
|
||||
}
|
||||
|
||||
func (p *testCommandProvider) GetAutoCompleteListItems(a *App, commandArgs *model.CommandArgs, arg *model.AutocompleteArg, parsed, toBeParsed string) ([]model.AutocompleteListItem, error) {
|
||||
func (p *testCommandProvider) GetAutoCompleteListItems(c request.CTX, a *App, commandArgs *model.CommandArgs, arg *model.AutocompleteArg, parsed, toBeParsed string) ([]model.AutocompleteListItem, error) {
|
||||
if arg.Name == "dynaArg" {
|
||||
return []model.AutocompleteListItem{
|
||||
{Item: "item1", Hint: "this is hint 1", HelpText: "This is help text 1."},
|
||||
@ -675,3 +675,6 @@ func (p *testCommandProvider) GetAutoCompleteListItems(a *App, commandArgs *mode
|
||||
}
|
||||
return nil, fmt.Errorf("%s not a dynamic argument", arg.Name)
|
||||
}
|
||||
|
||||
// ensure testCommandProvider implements AutocompleteDynamicArgProvider
|
||||
var _ AutocompleteDynamicArgProvider = (*testCommandProvider)(nil)
|
||||
|
@ -22,6 +22,9 @@ const (
|
||||
type RemoteProvider struct {
|
||||
}
|
||||
|
||||
// ensure RemoteProvider implements AutocompleteDynamicArgProvider
|
||||
var _ app.AutocompleteDynamicArgProvider = (*RemoteProvider)(nil)
|
||||
|
||||
const (
|
||||
CommandTriggerRemote = "secure-connection"
|
||||
)
|
||||
@ -93,7 +96,7 @@ func (rp *RemoteProvider) DoCommand(a *app.App, c request.CTX, args *model.Comma
|
||||
return responsef(args.T("api.command_remote.unknown_action", map[string]any{"Action": action}))
|
||||
}
|
||||
|
||||
func (rp *RemoteProvider) GetAutoCompleteListItems(a *app.App, commandArgs *model.CommandArgs, arg *model.AutocompleteArg, parsed, toBeParsed string) ([]model.AutocompleteListItem, error) {
|
||||
func (rp *RemoteProvider) GetAutoCompleteListItems(c request.CTX, a *app.App, commandArgs *model.CommandArgs, arg *model.AutocompleteArg, parsed, toBeParsed string) ([]model.AutocompleteListItem, error) {
|
||||
if !a.HasPermissionTo(commandArgs.UserId, model.PermissionManageSecureConnections) {
|
||||
return nil, errors.New("You require `manage_secure_connections` permission to manage secure connections.")
|
||||
}
|
||||
|
@ -17,6 +17,9 @@ import (
|
||||
type ShareProvider struct {
|
||||
}
|
||||
|
||||
// ensure ShareProvide implements AutocompleteDynamicArgProvider
|
||||
var _ app.AutocompleteDynamicArgProvider = (*ShareProvider)(nil)
|
||||
|
||||
const (
|
||||
CommandTriggerShare = "share-channel"
|
||||
AvailableShareActions = "invite, uninvite, unshare, status"
|
||||
|
Loading…
Reference in New Issue
Block a user