diff --git a/server/channels/app/command_autocomplete.go b/server/channels/app/command_autocomplete.go index 805329a43f..6d102238c8 100644 --- a/server/channels/app/command_autocomplete.go +++ b/server/channels/app/command_autocomplete.go @@ -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) } diff --git a/server/channels/app/command_autocomplete_test.go b/server/channels/app/command_autocomplete_test.go index 3270de4ac3..768f3d1f76 100644 --- a/server/channels/app/command_autocomplete_test.go +++ b/server/channels/app/command_autocomplete_test.go @@ -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) diff --git a/server/channels/app/slashcommands/command_remote.go b/server/channels/app/slashcommands/command_remote.go index 0fedee496c..49dd8fa9b9 100644 --- a/server/channels/app/slashcommands/command_remote.go +++ b/server/channels/app/slashcommands/command_remote.go @@ -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.") } diff --git a/server/channels/app/slashcommands/command_share.go b/server/channels/app/slashcommands/command_share.go index 1281253aab..8b6329e30e 100644 --- a/server/channels/app/slashcommands/command_share.go +++ b/server/channels/app/slashcommands/command_share.go @@ -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"