diff --git a/app/app_iface.go b/app/app_iface.go index 4f1205abc3..f0200424e5 100644 --- a/app/app_iface.go +++ b/app/app_iface.go @@ -37,12 +37,12 @@ import ( // AppIface is extracted from App struct and contains all it's exported methods. It's provided to allow partial interface passing and app layers creation. type AppIface interface { // @openTracingParams args - ExecuteCommand(c *request.Context, args *model.CommandArgs) (*model.CommandResponse, *model.AppError) + ExecuteCommand(c request.CTX, args *model.CommandArgs) (*model.CommandResponse, *model.AppError) // @openTracingParams teamID // previous ListCommands now ListAutocompleteCommands ListAutocompleteCommands(teamID string, T i18n.TranslateFunc) ([]*model.Command, *model.AppError) // @openTracingParams teamID, skipSlackParsing - CreateCommandPost(c *request.Context, post *model.Post, teamID string, response *model.CommandResponse, skipSlackParsing bool) (*model.Post, *model.AppError) + CreateCommandPost(c request.CTX, post *model.Post, teamID string, response *model.CommandResponse, skipSlackParsing bool) (*model.Post, *model.AppError) // AddChannelMember adds a user to a channel. It is a wrapper over AddUserToChannel. AddChannelMember(c request.CTX, userID string, channel *model.Channel, opts ChannelMemberOpts) (*model.ChannelMember, *model.AppError) // AddCursorIdsForPostList adds NextPostId and PrevPostId as cursor to the PostList. @@ -250,7 +250,7 @@ type AppIface interface { MentionsToPublicChannels(c request.CTX, message, teamID string) model.ChannelMentionMap // MentionsToTeamMembers returns all the @ mentions found in message that // belong to users in the specified team, linking them to their users - MentionsToTeamMembers(message, teamID string) model.UserMentionMap + MentionsToTeamMembers(c request.CTX, message, teamID string) model.UserMentionMap // MoveChannel method is prone to data races if someone joins to channel during the move process. However this // function is only exposed to sysadmins and the possibility of this edge case is relatively small. MoveChannel(c request.CTX, team *model.Team, channel *model.Channel, user *model.User) *model.AppError @@ -374,7 +374,7 @@ type AppIface interface { // UpdateWebConnUserActivity sets the LastUserActivityAt of the hub for the given session. UpdateWebConnUserActivity(session model.Session, activityAt int64) // UploadFile uploads a single file in form of a completely constructed byte array for a channel. - UploadFile(c *request.Context, data []byte, channelID string, filename string) (*model.FileInfo, *model.AppError) + UploadFile(c request.CTX, data []byte, channelID string, filename string) (*model.FileInfo, *model.AppError) // UploadFileX uploads a single file as specified in t. It applies the upload // constraints, executes plugins and image processing logic as needed. It // returns a filled-out FileInfo and an optional error. A plugin may reject the @@ -432,10 +432,10 @@ type AppIface interface { AutocompleteUsersInChannel(teamID string, channelID string, term string, options *model.UserSearchOptions) (*model.UserAutocompleteInChannel, *model.AppError) AutocompleteUsersInTeam(teamID string, term string, options *model.UserSearchOptions) (*model.UserAutocompleteInTeam, *model.AppError) BroadcastStatus(status *model.Status) - BuildPostReactions(postID string) (*[]ReactionImportData, *model.AppError) + BuildPostReactions(ctx request.CTX, postID string) (*[]ReactionImportData, *model.AppError) BuildPushNotificationMessage(c request.CTX, contentsConfig string, post *model.Post, user *model.User, channel *model.Channel, channelName string, senderName string, explicitMention bool, channelWideMention bool, replyToThreadType string) (*model.PushNotification, *model.AppError) BuildSamlMetadataObject(idpMetadata []byte) (*model.SamlMetadataResponse, *model.AppError) - BulkExport(writer io.Writer, outPath string, opts model.BulkExportOpts) *model.AppError + BulkExport(ctx request.CTX, writer io.Writer, outPath string, opts model.BulkExportOpts) *model.AppError BulkImport(c *request.Context, jsonlReader io.Reader, attachmentsReader *zip.Reader, dryRun bool, workers int) (*model.AppError, int) BulkImportWithPath(c *request.Context, jsonlReader io.Reader, attachmentsReader *zip.Reader, dryRun bool, workers int, importPath string) (*model.AppError, int) CancelJob(jobId string) *model.AppError @@ -549,7 +549,7 @@ type AppIface interface { DoPostActionWithCookie(c *request.Context, postID, actionId, userID, selectedOption string, cookie *model.PostActionCookie) (string, *model.AppError) DoSystemConsoleRolesCreationMigration() DoUploadFile(c *request.Context, now time.Time, rawTeamId string, rawChannelId string, rawUserId string, rawFilename string, data []byte) (*model.FileInfo, *model.AppError) - DoUploadFileExpectModification(c *request.Context, now time.Time, rawTeamId string, rawChannelId string, rawUserId string, rawFilename string, data []byte) (*model.FileInfo, []byte, *model.AppError) + DoUploadFileExpectModification(c request.CTX, now time.Time, rawTeamId string, rawChannelId string, rawUserId string, rawFilename string, data []byte) (*model.FileInfo, []byte, *model.AppError) DownloadFromURL(downloadURL string) ([]byte, error) EnableUserAccessToken(token *model.UserAccessToken) *model.AppError EnvironmentConfig(filter func(reflect.StructField) bool) map[string]any @@ -840,8 +840,8 @@ type AppIface interface { GetWarnMetricsStatus() (map[string]*model.WarnMetricStatus, *model.AppError) HTTPService() httpservice.HTTPService Handle404(w http.ResponseWriter, r *http.Request) - HandleCommandResponse(c *request.Context, command *model.Command, args *model.CommandArgs, response *model.CommandResponse, builtIn bool) (*model.CommandResponse, *model.AppError) - HandleCommandResponsePost(c *request.Context, command *model.Command, args *model.CommandArgs, response *model.CommandResponse, builtIn bool) (*model.Post, *model.AppError) + HandleCommandResponse(c request.CTX, command *model.Command, args *model.CommandArgs, response *model.CommandResponse, builtIn bool) (*model.CommandResponse, *model.AppError) + HandleCommandResponsePost(c request.CTX, command *model.Command, args *model.CommandArgs, response *model.CommandResponse, builtIn bool) (*model.Post, *model.AppError) HandleCommandWebhook(c *request.Context, hookID string, response *model.CommandResponse) *model.AppError HandleImages(previewPathList []string, thumbnailPathList []string, fileData [][]byte) HandleIncomingWebhook(c *request.Context, hookID string, req *model.IncomingWebhookRequest) *model.AppError @@ -1125,7 +1125,7 @@ type AppIface interface { UpdateThreadReadForUserByPost(c request.CTX, currentSessionId, userID, teamID, threadID, postID string) (*model.ThreadResponse, *model.AppError) UpdateThreadsReadForUser(userID, teamID string) *model.AppError UpdateUser(c request.CTX, user *model.User, sendNotifications bool) (*model.User, *model.AppError) - UpdateUserActive(c *request.Context, userID string, active bool) *model.AppError + UpdateUserActive(c request.CTX, userID string, active bool) *model.AppError UpdateUserAsUser(c request.CTX, user *model.User, asAdmin bool) (*model.User, *model.AppError) UpdateUserAuth(userID string, userAuth *model.UserAuth) (*model.UserAuth, *model.AppError) UpdateUserRoles(c request.CTX, userID string, newRoles string, sendWebSocketEvent bool) (*model.User, *model.AppError) diff --git a/app/command.go b/app/command.go index 038979752f..7d4ac80551 100644 --- a/app/command.go +++ b/app/command.go @@ -33,7 +33,7 @@ var atMentionRegexp = regexp.MustCompile(`\B@[[:alnum:]][[:alnum:]\.\-_:]*`) type CommandProvider interface { GetTrigger() string GetCommand(a *App, T i18n.TranslateFunc) *model.Command - DoCommand(a *App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse + DoCommand(a *App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse } var commandProviders = make(map[string]CommandProvider) @@ -52,7 +52,7 @@ func GetCommandProvider(name string) CommandProvider { } // @openTracingParams teamID, skipSlackParsing -func (a *App) CreateCommandPost(c *request.Context, post *model.Post, teamID string, response *model.CommandResponse, skipSlackParsing bool) (*model.Post, *model.AppError) { +func (a *App) CreateCommandPost(c request.CTX, post *model.Post, teamID string, response *model.CommandResponse, skipSlackParsing bool) (*model.Post, *model.AppError) { if skipSlackParsing { post.Message = response.Text } else { @@ -180,7 +180,7 @@ func (a *App) ListAllCommands(teamID string, T i18n.TranslateFunc) ([]*model.Com } // @openTracingParams args -func (a *App) ExecuteCommand(c *request.Context, args *model.CommandArgs) (*model.CommandResponse, *model.AppError) { +func (a *App) ExecuteCommand(c request.CTX, args *model.CommandArgs) (*model.CommandResponse, *model.AppError) { trigger := "" message := "" index := strings.IndexFunc(args.Command, unicode.IsSpace) @@ -198,7 +198,7 @@ func (a *App) ExecuteCommand(c *request.Context, args *model.CommandArgs) (*mode clientTriggerId, triggerId, appErr := model.GenerateTriggerId(args.UserId, a.AsymmetricSigningKey()) if appErr != nil { - mlog.Warn("error occurred in generating trigger Id for a user ", mlog.Err(appErr)) + c.Logger().Warn("error occurred in generating trigger Id for a user ", mlog.Err(appErr)) } args.TriggerId = triggerId @@ -235,7 +235,7 @@ func (a *App) ExecuteCommand(c *request.Context, args *model.CommandArgs) (*mode // MentionsToTeamMembers returns all the @ mentions found in message that // belong to users in the specified team, linking them to their users -func (a *App) MentionsToTeamMembers(message, teamID string) model.UserMentionMap { +func (a *App) MentionsToTeamMembers(c request.CTX, message, teamID string) model.UserMentionMap { type mentionMapItem struct { Name string Id string @@ -253,7 +253,7 @@ func (a *App) MentionsToTeamMembers(message, teamID string) model.UserMentionMap var nfErr *store.ErrNotFound if nErr != nil && !errors.As(nErr, &nfErr) { - mlog.Warn("Failed to retrieve user @"+mention, mlog.Err(nErr)) + c.Logger().Warn("Failed to retrieve user @"+mention, mlog.Err(nErr)) return } @@ -347,7 +347,7 @@ func (a *App) MentionsToPublicChannels(c request.CTX, message, teamID string) mo // tryExecuteBuiltInCommand attempts to run a built in command based on the given arguments. If no such command can be // found, returns nil for all arguments. -func (a *App) tryExecuteBuiltInCommand(c *request.Context, args *model.CommandArgs, trigger string, message string) (*model.Command, *model.CommandResponse) { +func (a *App) tryExecuteBuiltInCommand(c request.CTX, args *model.CommandArgs, trigger string, message string) (*model.Command, *model.CommandResponse) { provider := GetCommandProvider(trigger) if provider == nil { return nil, nil @@ -443,7 +443,7 @@ func (a *App) tryExecuteCustomCommand(c request.CTX, args *model.CommandArgs, tr return nil, nil, nil } - mlog.Debug("Executing command", mlog.String("command", trigger), mlog.String("user_id", args.UserId)) + c.Logger().Debug("Executing command", mlog.String("command", trigger), mlog.String("user_id", args.UserId)) p := url.Values{} p.Set("token", cmd.Token) @@ -462,7 +462,7 @@ func (a *App) tryExecuteCustomCommand(c request.CTX, args *model.CommandArgs, tr p.Set("trigger_id", args.TriggerId) - userMentionMap := a.MentionsToTeamMembers(message, team.Id) + userMentionMap := a.MentionsToTeamMembers(c, message, team.Id) for key, values := range userMentionMap.ToURLValues() { p[key] = values } @@ -536,7 +536,7 @@ func (a *App) DoCommandRequest(cmd *model.Command, p url.Values) (*model.Command return cmd, response, nil } -func (a *App) HandleCommandResponse(c *request.Context, command *model.Command, args *model.CommandArgs, response *model.CommandResponse, builtIn bool) (*model.CommandResponse, *model.AppError) { +func (a *App) HandleCommandResponse(c request.CTX, command *model.Command, args *model.CommandArgs, response *model.CommandResponse, builtIn bool) (*model.CommandResponse, *model.AppError) { trigger := "" if args.Command != "" { parts := strings.Split(args.Command, " ") @@ -570,7 +570,7 @@ func (a *App) HandleCommandResponse(c *request.Context, command *model.Command, return response, nil } -func (a *App) HandleCommandResponsePost(c *request.Context, command *model.Command, args *model.CommandArgs, response *model.CommandResponse, builtIn bool) (*model.Post, *model.AppError) { +func (a *App) HandleCommandResponsePost(c request.CTX, command *model.Command, args *model.CommandArgs, response *model.CommandResponse, builtIn bool) (*model.Post, *model.AppError) { post := &model.Post{} post.ChannelId = args.ChannelId post.RootId = args.RootId diff --git a/app/command_autocomplete_test.go b/app/command_autocomplete_test.go index a8e2a5567b..0411664902 100644 --- a/app/command_autocomplete_test.go +++ b/app/command_autocomplete_test.go @@ -659,7 +659,7 @@ func (p *testCommandProvider) GetCommand(a *App, T i18n.TranslateFunc) *model.Co } } -func (p *testCommandProvider) DoCommand(a *App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse { +func (p *testCommandProvider) DoCommand(a *App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse { return &model.CommandResponse{ Text: "I do nothing!", ResponseType: model.CommandResponseTypeEphemeral, diff --git a/app/export.go b/app/export.go index 456bb7ea08..7aad4a597d 100644 --- a/app/export.go +++ b/app/export.go @@ -15,6 +15,7 @@ import ( "github.com/pkg/errors" + "github.com/mattermost/mattermost-server/v6/app/request" "github.com/mattermost/mattermost-server/v6/model" "github.com/mattermost/mattermost-server/v6/shared/mlog" "github.com/mattermost/mattermost-server/v6/store" @@ -61,7 +62,7 @@ var exportablePreferences = map[ComparablePreference]string{{ }: "EmailInterval", } -func (a *App) BulkExport(writer io.Writer, outPath string, opts model.BulkExportOpts) *model.AppError { +func (a *App) BulkExport(ctx request.CTX, writer io.Writer, outPath string, opts model.BulkExportOpts) *model.AppError { var zipWr *zip.Writer if opts.CreateArchive { var err error @@ -74,52 +75,52 @@ func (a *App) BulkExport(writer io.Writer, outPath string, opts model.BulkExport } } - mlog.Info("Bulk export: exporting version") + ctx.Logger().Info("Bulk export: exporting version") if err := a.exportVersion(writer); err != nil { return err } - mlog.Info("Bulk export: exporting teams") + ctx.Logger().Info("Bulk export: exporting teams") teamNames, err := a.exportAllTeams(writer) if err != nil { return err } - mlog.Info("Bulk export: exporting channels") + ctx.Logger().Info("Bulk export: exporting channels") if err = a.exportAllChannels(writer, teamNames); err != nil { return err } - mlog.Info("Bulk export: exporting users") + ctx.Logger().Info("Bulk export: exporting users") if err = a.exportAllUsers(writer); err != nil { return err } - mlog.Info("Bulk export: exporting posts") - attachments, err := a.exportAllPosts(writer, opts.IncludeAttachments) + ctx.Logger().Info("Bulk export: exporting posts") + attachments, err := a.exportAllPosts(ctx, writer, opts.IncludeAttachments) if err != nil { return err } - mlog.Info("Bulk export: exporting emoji") + ctx.Logger().Info("Bulk export: exporting emoji") emojiPaths, err := a.exportCustomEmoji(writer, outPath, "exported_emoji", !opts.CreateArchive) if err != nil { return err } - mlog.Info("Bulk export: exporting direct channels") + ctx.Logger().Info("Bulk export: exporting direct channels") if err = a.exportAllDirectChannels(writer); err != nil { return err } - mlog.Info("Bulk export: exporting direct posts") - directAttachments, err := a.exportAllDirectPosts(writer, opts.IncludeAttachments) + ctx.Logger().Info("Bulk export: exporting direct posts") + directAttachments, err := a.exportAllDirectPosts(ctx, writer, opts.IncludeAttachments) if err != nil { return err } if opts.IncludeAttachments { - mlog.Info("Bulk export: exporting file attachments") + ctx.Logger().Info("Bulk export: exporting file attachments") for _, attachment := range attachments { if err := a.exportFile(outPath, *attachment.Path, zipWr); err != nil { return err @@ -383,7 +384,7 @@ func (a *App) buildUserNotifyProps(notifyProps model.StringMap) *UserNotifyProps } } -func (a *App) exportAllPosts(writer io.Writer, withAttachments bool) ([]AttachmentImportData, *model.AppError) { +func (a *App) exportAllPosts(ctx request.CTX, writer io.Writer, withAttachments bool) ([]AttachmentImportData, *model.AppError) { var attachments []AttachmentImportData afterId := strings.Repeat("0", 26) @@ -407,7 +408,7 @@ func (a *App) exportAllPosts(writer io.Writer, withAttachments bool) ([]Attachme postLine := ImportLineForPost(post) - replies, replyAttachments, err := a.buildPostReplies(post.Id, withAttachments) + replies, replyAttachments, err := a.buildPostReplies(ctx, post.Id, withAttachments) if err != nil { return nil, err } @@ -419,7 +420,7 @@ func (a *App) exportAllPosts(writer io.Writer, withAttachments bool) ([]Attachme postLine.Post.Replies = &replies postLine.Post.Reactions = &[]ReactionImportData{} if post.HasReactions { - postLine.Post.Reactions, err = a.BuildPostReactions(post.Id) + postLine.Post.Reactions, err = a.BuildPostReactions(ctx, post.Id) if err != nil { return nil, err } @@ -444,7 +445,7 @@ func (a *App) exportAllPosts(writer io.Writer, withAttachments bool) ([]Attachme } } -func (a *App) buildPostReplies(postID string, withAttachments bool) ([]ReplyImportData, []AttachmentImportData, *model.AppError) { +func (a *App) buildPostReplies(ctx request.CTX, postID string, withAttachments bool) ([]ReplyImportData, []AttachmentImportData, *model.AppError) { var replies []ReplyImportData var attachments []AttachmentImportData @@ -457,7 +458,7 @@ func (a *App) buildPostReplies(postID string, withAttachments bool) ([]ReplyImpo replyImportObject := ImportReplyFromPost(reply) if reply.HasReactions { var appErr *model.AppError - replyImportObject.Reactions, appErr = a.BuildPostReactions(reply.Id) + replyImportObject.Reactions, appErr = a.BuildPostReactions(ctx, reply.Id) if appErr != nil { return nil, nil, appErr } @@ -479,7 +480,7 @@ func (a *App) buildPostReplies(postID string, withAttachments bool) ([]ReplyImpo return replies, attachments, nil } -func (a *App) BuildPostReactions(postID string) (*[]ReactionImportData, *model.AppError) { +func (a *App) BuildPostReactions(ctx request.CTX, postID string) (*[]ReactionImportData, *model.AppError) { var reactionsOfPost []ReactionImportData reactions, nErr := a.Srv().Store.Reaction().GetForPost(postID, true) @@ -492,7 +493,7 @@ func (a *App) BuildPostReactions(postID string) (*[]ReactionImportData, *model.A if err != nil { var nfErr *store.ErrNotFound if errors.As(err, &nfErr) { // this is a valid case, the user that reacted might've been deleted by now - mlog.Info("Skipping reactions by user since the entity doesn't exist anymore", mlog.String("user_id", reaction.UserId)) + ctx.Logger().Info("Skipping reactions by user since the entity doesn't exist anymore", mlog.String("user_id", reaction.UserId)) continue } return nil, model.NewAppError("BuildPostReactions", "app.user.get.app_error", nil, err.Error(), http.StatusInternalServerError) @@ -634,7 +635,7 @@ func (a *App) exportAllDirectChannels(writer io.Writer) *model.AppError { return nil } -func (a *App) exportAllDirectPosts(writer io.Writer, withAttachments bool) ([]AttachmentImportData, *model.AppError) { +func (a *App) exportAllDirectPosts(ctx request.CTX, writer io.Writer, withAttachments bool) ([]AttachmentImportData, *model.AppError) { var attachments []AttachmentImportData afterId := strings.Repeat("0", 26) for { @@ -670,7 +671,7 @@ func (a *App) exportAllDirectPosts(writer io.Writer, withAttachments bool) ([]At } // Do the Replies. - replies, replyAttachments, err := a.buildPostReplies(post.Id, withAttachments) + replies, replyAttachments, err := a.buildPostReplies(ctx, post.Id, withAttachments) if err != nil { return nil, err } diff --git a/app/export_test.go b/app/export_test.go index c7711afc0c..e9231a3af4 100644 --- a/app/export_test.go +++ b/app/export_test.go @@ -42,7 +42,7 @@ func TestReactionsOfPost(t *testing.T) { th.App.SaveReactionForPost(th.Context, &reactionObject) th.App.SaveReactionForPost(th.Context, &reactionObjectDeleted) - reactionsOfPost, err := th.App.BuildPostReactions(post.Id) + reactionsOfPost, err := th.App.BuildPostReactions(th.Context, post.Id) require.Nil(t, err) assert.Equal(t, reactionObject.EmojiName, *(*reactionsOfPost)[0].EmojiName) @@ -179,7 +179,7 @@ func TestExportAllUsers(t *testing.T) { require.Nil(t, err) var b bytes.Buffer - err = th1.App.BulkExport(&b, "somePath", model.BulkExportOpts{}) + err = th1.App.BulkExport(th1.Context, &b, "somePath", model.BulkExportOpts{}) require.Nil(t, err) th2 := Setup(t) @@ -227,7 +227,7 @@ func TestExportDMChannel(t *testing.T) { th1.CreateDmChannel(th1.BasicUser2) var b bytes.Buffer - err := th1.App.BulkExport(&b, "somePath", model.BulkExportOpts{}) + err := th1.App.BulkExport(th1.Context, &b, "somePath", model.BulkExportOpts{}) require.Nil(t, err) channels, nErr := th1.App.Srv().Store.Channel().GetAllDirectChannelsForExportAfter(1000, "00000000") @@ -268,7 +268,7 @@ func TestExportDMChannel(t *testing.T) { th1.App.PermanentDeleteUser(th1.Context, th1.BasicUser) var b bytes.Buffer - err := th1.App.BulkExport(&b, "somePath", model.BulkExportOpts{}) + err := th1.App.BulkExport(th1.Context, &b, "somePath", model.BulkExportOpts{}) require.Nil(t, err) th2 := Setup(t).InitBasic() @@ -292,7 +292,7 @@ func TestExportDMChannelToSelf(t *testing.T) { th1.CreateDmChannel(th1.BasicUser) var b bytes.Buffer - err := th1.App.BulkExport(&b, "somePath", model.BulkExportOpts{}) + err := th1.App.BulkExport(th1.Context, &b, "somePath", model.BulkExportOpts{}) require.Nil(t, err) channels, nErr := th1.App.Srv().Store.Channel().GetAllDirectChannelsForExportAfter(1000, "00000000") @@ -330,7 +330,7 @@ func TestExportGMChannel(t *testing.T) { th1.CreateGroupChannel(th1.Context, user1, user2) var b bytes.Buffer - err := th1.App.BulkExport(&b, "somePath", model.BulkExportOpts{}) + err := th1.App.BulkExport(th1.Context, &b, "somePath", model.BulkExportOpts{}) require.Nil(t, err) channels, nErr := th1.App.Srv().Store.Channel().GetAllDirectChannelsForExportAfter(1000, "00000000") @@ -362,7 +362,7 @@ func TestExportGMandDMChannels(t *testing.T) { th1.CreateGroupChannel(th1.Context, user1, user2) var b bytes.Buffer - err := th1.App.BulkExport(&b, "somePath", model.BulkExportOpts{}) + err := th1.App.BulkExport(th1.Context, &b, "somePath", model.BulkExportOpts{}) require.Nil(t, err) channels, nErr := th1.App.Srv().Store.Channel().GetAllDirectChannelsForExportAfter(1000, "00000000") @@ -445,7 +445,7 @@ func TestExportDMandGMPost(t *testing.T) { assert.Equal(t, 4, len(posts)) var b bytes.Buffer - appErr := th1.App.BulkExport(&b, "somePath", model.BulkExportOpts{}) + appErr := th1.App.BulkExport(th1.Context, &b, "somePath", model.BulkExportOpts{}) require.Nil(t, appErr) th1.TearDown() @@ -520,7 +520,7 @@ func TestExportPostWithProps(t *testing.T) { require.NotEmpty(t, posts[1].Props) var b bytes.Buffer - appErr := th1.App.BulkExport(&b, "somePath", model.BulkExportOpts{}) + appErr := th1.App.BulkExport(th1.Context, &b, "somePath", model.BulkExportOpts{}) require.Nil(t, appErr) th1.TearDown() @@ -558,7 +558,7 @@ func TestExportDMPostWithSelf(t *testing.T) { th1.CreatePost(dmChannel) var b bytes.Buffer - err := th1.App.BulkExport(&b, "somePath", model.BulkExportOpts{}) + err := th1.App.BulkExport(th1.Context, &b, "somePath", model.BulkExportOpts{}) require.Nil(t, err) posts, nErr := th1.App.Srv().Store.Post().GetDirectPostParentsForExportAfter(1000, "0000000") @@ -626,7 +626,7 @@ func TestBulkExport(t *testing.T) { IncludeAttachments: true, CreateArchive: true, } - appErr = th.App.BulkExport(exportFile, dir, opts) + appErr = th.App.BulkExport(th.Context, exportFile, dir, opts) require.Nil(t, appErr) th.TearDown() @@ -663,7 +663,7 @@ func TestBuildPostReplies(t *testing.T) { } t.Run("basic post", func(t *testing.T) { - data, attachments, err := th.App.buildPostReplies(th.BasicPost.Id, true) + data, attachments, err := th.App.buildPostReplies(th.Context, th.BasicPost.Id, true) require.Nil(t, err) require.Empty(t, data) require.Empty(t, attachments) @@ -671,7 +671,7 @@ func TestBuildPostReplies(t *testing.T) { t.Run("root post with attachments and no replies", func(t *testing.T) { post := createPostWithAttachments(th, 5, "") - data, attachments, err := th.App.buildPostReplies(post.Id, true) + data, attachments, err := th.App.buildPostReplies(th.Context, post.Id, true) require.Nil(t, err) require.Empty(t, data) require.Empty(t, attachments) @@ -680,7 +680,7 @@ func TestBuildPostReplies(t *testing.T) { t.Run("root post with attachments and a reply", func(t *testing.T) { post := createPostWithAttachments(th, 5, "") createPostWithAttachments(th, 0, post.Id) - data, attachments, err := th.App.buildPostReplies(post.Id, true) + data, attachments, err := th.App.buildPostReplies(th.Context, post.Id, true) require.Nil(t, err) require.Len(t, data, 1) require.Empty(t, attachments) @@ -690,7 +690,7 @@ func TestBuildPostReplies(t *testing.T) { post := createPostWithAttachments(th, 5, "") reply1 := createPostWithAttachments(th, 2, post.Id) reply2 := createPostWithAttachments(th, 3, post.Id) - data, attachments, err := th.App.buildPostReplies(post.Id, true) + data, attachments, err := th.App.buildPostReplies(th.Context, post.Id, true) require.Nil(t, err) require.Len(t, data, 2) require.Len(t, attachments, 5) @@ -717,7 +717,7 @@ func TestExportDeletedTeams(t *testing.T) { require.Nil(t, err) var b bytes.Buffer - err = th1.App.BulkExport(&b, "somePath", model.BulkExportOpts{}) + err = th1.App.BulkExport(th1.Context, &b, "somePath", model.BulkExportOpts{}) require.Nil(t, err) th2 := Setup(t) diff --git a/app/file.go b/app/file.go index 12c954de33..1f0e557e18 100644 --- a/app/file.go +++ b/app/file.go @@ -524,7 +524,7 @@ func (a *App) UploadFiles(c *request.Context, teamID string, channelID string, u } // UploadFile uploads a single file in form of a completely constructed byte array for a channel. -func (a *App) UploadFile(c *request.Context, data []byte, channelID string, filename string) (*model.FileInfo, *model.AppError) { +func (a *App) UploadFile(c request.CTX, data []byte, channelID string, filename string) (*model.FileInfo, *model.AppError) { _, err := a.GetChannel(c, channelID) if err != nil && channelID != "" { return nil, model.NewAppError("UploadFile", "api.file.upload_file.incorrect_channelId.app_error", @@ -924,7 +924,7 @@ func (t UploadFileTask) newAppError(id string, httpStatus int, extra ...any) *mo return model.NewAppError("uploadFileTask", id, params, "", httpStatus) } -func (a *App) DoUploadFileExpectModification(c *request.Context, now time.Time, rawTeamId string, rawChannelId string, rawUserId string, rawFilename string, data []byte) (*model.FileInfo, []byte, *model.AppError) { +func (a *App) DoUploadFileExpectModification(c request.CTX, now time.Time, rawTeamId string, rawChannelId string, rawUserId string, rawFilename string, data []byte) (*model.FileInfo, []byte, *model.AppError) { filename := filepath.Base(rawFilename) teamID := filepath.Base(rawTeamId) channelID := filepath.Base(rawChannelId) diff --git a/app/opentracing/opentracing_layer.go b/app/opentracing/opentracing_layer.go index cd6c85fc5d..4abf8686ba 100644 --- a/app/opentracing/opentracing_layer.go +++ b/app/opentracing/opentracing_layer.go @@ -951,7 +951,7 @@ func (a *OpenTracingAppLayer) BroadcastStatus(status *model.Status) { a.app.BroadcastStatus(status) } -func (a *OpenTracingAppLayer) BuildPostReactions(postID string) (*[]app.ReactionImportData, *model.AppError) { +func (a *OpenTracingAppLayer) BuildPostReactions(ctx request.CTX, postID string) (*[]app.ReactionImportData, *model.AppError) { origCtx := a.ctx span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.BuildPostReactions") @@ -963,7 +963,7 @@ func (a *OpenTracingAppLayer) BuildPostReactions(postID string) (*[]app.Reaction }() defer span.Finish() - resultVar0, resultVar1 := a.app.BuildPostReactions(postID) + resultVar0, resultVar1 := a.app.BuildPostReactions(ctx, postID) if resultVar1 != nil { span.LogFields(spanlog.Error(resultVar1)) @@ -1017,7 +1017,7 @@ func (a *OpenTracingAppLayer) BuildSamlMetadataObject(idpMetadata []byte) (*mode return resultVar0, resultVar1 } -func (a *OpenTracingAppLayer) BulkExport(writer io.Writer, outPath string, opts model.BulkExportOpts) *model.AppError { +func (a *OpenTracingAppLayer) BulkExport(ctx request.CTX, writer io.Writer, outPath string, opts model.BulkExportOpts) *model.AppError { origCtx := a.ctx span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.BulkExport") @@ -1029,7 +1029,7 @@ func (a *OpenTracingAppLayer) BulkExport(writer io.Writer, outPath string, opts }() defer span.Finish() - resultVar0 := a.app.BulkExport(writer, outPath, opts) + resultVar0 := a.app.BulkExport(ctx, writer, outPath, opts) if resultVar0 != nil { span.LogFields(spanlog.Error(resultVar0)) @@ -1967,7 +1967,7 @@ func (a *OpenTracingAppLayer) CreateCommand(cmd *model.Command) (*model.Command, return resultVar0, resultVar1 } -func (a *OpenTracingAppLayer) CreateCommandPost(c *request.Context, post *model.Post, teamID string, response *model.CommandResponse, skipSlackParsing bool) (*model.Post, *model.AppError) { +func (a *OpenTracingAppLayer) CreateCommandPost(c request.CTX, post *model.Post, teamID string, response *model.CommandResponse, skipSlackParsing bool) (*model.Post, *model.AppError) { origCtx := a.ctx span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.CreateCommandPost") @@ -3838,7 +3838,7 @@ func (a *OpenTracingAppLayer) DoUploadFile(c *request.Context, now time.Time, ra return resultVar0, resultVar1 } -func (a *OpenTracingAppLayer) DoUploadFileExpectModification(c *request.Context, now time.Time, rawTeamId string, rawChannelId string, rawUserId string, rawFilename string, data []byte) (*model.FileInfo, []byte, *model.AppError) { +func (a *OpenTracingAppLayer) DoUploadFileExpectModification(c request.CTX, now time.Time, rawTeamId string, rawChannelId string, rawUserId string, rawFilename string, data []byte) (*model.FileInfo, []byte, *model.AppError) { origCtx := a.ctx span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.DoUploadFileExpectModification") @@ -3987,7 +3987,7 @@ func (a *OpenTracingAppLayer) EnvironmentConfig(filter func(reflect.StructField) return resultVar0 } -func (a *OpenTracingAppLayer) ExecuteCommand(c *request.Context, args *model.CommandArgs) (*model.CommandResponse, *model.AppError) { +func (a *OpenTracingAppLayer) ExecuteCommand(c request.CTX, args *model.CommandArgs) (*model.CommandResponse, *model.AppError) { origCtx := a.ctx span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.ExecuteCommand") @@ -10975,7 +10975,7 @@ func (a *OpenTracingAppLayer) Handle404(w http.ResponseWriter, r *http.Request) a.app.Handle404(w, r) } -func (a *OpenTracingAppLayer) HandleCommandResponse(c *request.Context, command *model.Command, args *model.CommandArgs, response *model.CommandResponse, builtIn bool) (*model.CommandResponse, *model.AppError) { +func (a *OpenTracingAppLayer) HandleCommandResponse(c request.CTX, command *model.Command, args *model.CommandArgs, response *model.CommandResponse, builtIn bool) (*model.CommandResponse, *model.AppError) { origCtx := a.ctx span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.HandleCommandResponse") @@ -10997,7 +10997,7 @@ func (a *OpenTracingAppLayer) HandleCommandResponse(c *request.Context, command return resultVar0, resultVar1 } -func (a *OpenTracingAppLayer) HandleCommandResponsePost(c *request.Context, command *model.Command, args *model.CommandArgs, response *model.CommandResponse, builtIn bool) (*model.Post, *model.AppError) { +func (a *OpenTracingAppLayer) HandleCommandResponsePost(c request.CTX, command *model.Command, args *model.CommandArgs, response *model.CommandResponse, builtIn bool) (*model.Post, *model.AppError) { origCtx := a.ctx span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.HandleCommandResponsePost") @@ -12151,7 +12151,7 @@ func (a *OpenTracingAppLayer) MentionsToPublicChannels(c request.CTX, message st return resultVar0 } -func (a *OpenTracingAppLayer) MentionsToTeamMembers(message string, teamID string) model.UserMentionMap { +func (a *OpenTracingAppLayer) MentionsToTeamMembers(c request.CTX, message string, teamID string) model.UserMentionMap { origCtx := a.ctx span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.MentionsToTeamMembers") @@ -12163,7 +12163,7 @@ func (a *OpenTracingAppLayer) MentionsToTeamMembers(message string, teamID strin }() defer span.Finish() - resultVar0 := a.app.MentionsToTeamMembers(message, teamID) + resultVar0 := a.app.MentionsToTeamMembers(c, message, teamID) return resultVar0 } @@ -17563,7 +17563,7 @@ func (a *OpenTracingAppLayer) UpdateUser(c request.CTX, user *model.User, sendNo return resultVar0, resultVar1 } -func (a *OpenTracingAppLayer) UpdateUserActive(c *request.Context, userID string, active bool) *model.AppError { +func (a *OpenTracingAppLayer) UpdateUserActive(c request.CTX, userID string, active bool) *model.AppError { origCtx := a.ctx span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.UpdateUserActive") @@ -17769,7 +17769,7 @@ func (a *OpenTracingAppLayer) UploadEmojiImage(id string, imageData *multipart.F return resultVar0 } -func (a *OpenTracingAppLayer) UploadFile(c *request.Context, data []byte, channelID string, filename string) (*model.FileInfo, *model.AppError) { +func (a *OpenTracingAppLayer) UploadFile(c request.CTX, data []byte, channelID string, filename string) (*model.FileInfo, *model.AppError) { origCtx := a.ctx span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.UploadFile") diff --git a/app/plugin_api_test.go b/app/plugin_api_test.go index 03cfce39bb..6bb40a78cd 100644 --- a/app/plugin_api_test.go +++ b/app/plugin_api_test.go @@ -1821,7 +1821,7 @@ func (*MockSlashCommandProvider) GetCommand(a *App, T i18n.TranslateFunc) *model } } -func (mscp *MockSlashCommandProvider) DoCommand(a *App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse { +func (mscp *MockSlashCommandProvider) DoCommand(a *App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse { mscp.Args = args mscp.Message = message return &model.CommandResponse{ diff --git a/app/plugin_commands.go b/app/plugin_commands.go index 3caa1547ab..e70c69a38a 100644 --- a/app/plugin_commands.go +++ b/app/plugin_commands.go @@ -117,7 +117,7 @@ func (a *App) PluginCommandsForTeam(teamID string) []*model.Command { // tryExecutePluginCommand attempts to run a command provided by a plugin based on the given arguments. If no such // command can be found, returns nil for all arguments. -func (a *App) tryExecutePluginCommand(c *request.Context, args *model.CommandArgs) (*model.Command, *model.CommandResponse, *model.AppError) { +func (a *App) tryExecutePluginCommand(c request.CTX, args *model.CommandArgs) (*model.Command, *model.CommandResponse, *model.AppError) { parts := strings.Split(args.Command, " ") trigger := parts[0][1:] trigger = strings.ToLower(trigger) @@ -150,7 +150,7 @@ func (a *App) tryExecutePluginCommand(c *request.Context, args *model.CommandArg return matched.Command, nil, model.NewAppError("ExecutePluginCommand", "model.plugin_command.error.app_error", nil, "err="+err.Error(), http.StatusInternalServerError) } - for username, userID := range a.MentionsToTeamMembers(args.Command, args.TeamId) { + for username, userID := range a.MentionsToTeamMembers(c, args.Command, args.TeamId) { args.AddUserMention(username, userID) } diff --git a/app/slashcommands/auto_channels.go b/app/slashcommands/auto_channels.go index 7a4791db24..53726177cf 100644 --- a/app/slashcommands/auto_channels.go +++ b/app/slashcommands/auto_channels.go @@ -36,7 +36,7 @@ func NewAutoChannelCreator(a *app.App, team *model.Team, userID string) *AutoCha } } -func (cfg *AutoChannelCreator) createRandomChannel(c *request.Context) (*model.Channel, error) { +func (cfg *AutoChannelCreator) createRandomChannel(c request.CTX) (*model.Channel, error) { var displayName string if cfg.Fuzzy { displayName = utils.FuzzName() @@ -60,7 +60,7 @@ func (cfg *AutoChannelCreator) createRandomChannel(c *request.Context) (*model.C return channel, nil } -func (cfg *AutoChannelCreator) CreateTestChannels(c *request.Context, num utils.Range) ([]*model.Channel, error) { +func (cfg *AutoChannelCreator) CreateTestChannels(c request.CTX, num utils.Range) ([]*model.Channel, error) { numChannels := utils.RandIntFromRange(num) channels := make([]*model.Channel, numChannels) @@ -75,7 +75,7 @@ func (cfg *AutoChannelCreator) CreateTestChannels(c *request.Context, num utils. return channels, nil } -func (cfg *AutoChannelCreator) CreateTestDMs(c *request.Context, num utils.Range) ([]*model.Channel, error) { +func (cfg *AutoChannelCreator) CreateTestDMs(c request.CTX, num utils.Range) ([]*model.Channel, error) { numDMs := utils.RandIntFromRange(num) dms := make([]*model.Channel, numDMs) diff --git a/app/slashcommands/auto_environment.go b/app/slashcommands/auto_environment.go index 50870decf3..fcd1c92084 100644 --- a/app/slashcommands/auto_environment.go +++ b/app/slashcommands/auto_environment.go @@ -18,7 +18,7 @@ type TestEnvironment struct { Environments []TeamEnvironment } -func CreateTestEnvironmentWithTeams(a *app.App, c *request.Context, client *model.Client4, rangeTeams utils.Range, rangeChannels utils.Range, rangeUsers utils.Range, rangePosts utils.Range, fuzzy bool) (TestEnvironment, error) { +func CreateTestEnvironmentWithTeams(a *app.App, c request.CTX, client *model.Client4, rangeTeams utils.Range, rangeChannels utils.Range, rangeUsers utils.Range, rangePosts utils.Range, fuzzy bool) (TestEnvironment, error) { rand.Seed(time.Now().UTC().UnixNano()) teamCreator := NewAutoTeamCreator(client) @@ -48,7 +48,7 @@ func CreateTestEnvironmentWithTeams(a *app.App, c *request.Context, client *mode return environment, nil } -func CreateTestEnvironmentInTeam(a *app.App, c *request.Context, client *model.Client4, team *model.Team, rangeChannels utils.Range, rangeUsers utils.Range, rangePosts utils.Range, fuzzy bool) (TeamEnvironment, error) { +func CreateTestEnvironmentInTeam(a *app.App, c request.CTX, client *model.Client4, team *model.Team, rangeChannels utils.Range, rangeUsers utils.Range, rangePosts utils.Range, fuzzy bool) (TeamEnvironment, error) { rand.Seed(time.Now().UTC().UnixNano()) // We need to create at least one user diff --git a/app/slashcommands/auto_posts.go b/app/slashcommands/auto_posts.go index 3c78b09988..666bbea5a4 100644 --- a/app/slashcommands/auto_posts.go +++ b/app/slashcommands/auto_posts.go @@ -45,7 +45,7 @@ func NewAutoPostCreator(a *app.App, channelid, userid string) *AutoPostCreator { } } -func (cfg *AutoPostCreator) UploadTestFile(c *request.Context) ([]string, error) { +func (cfg *AutoPostCreator) UploadTestFile(c request.CTX) ([]string, error) { filename := cfg.ImageFilenames[utils.RandIntFromRange(utils.Range{Begin: 0, End: len(cfg.ImageFilenames) - 1})] path, _ := fileutils.FindDir("tests") @@ -69,11 +69,11 @@ func (cfg *AutoPostCreator) UploadTestFile(c *request.Context) ([]string, error) return []string{fileResp.Id}, nil } -func (cfg *AutoPostCreator) CreateRandomPost(c *request.Context) (*model.Post, error) { +func (cfg *AutoPostCreator) CreateRandomPost(c request.CTX) (*model.Post, error) { return cfg.CreateRandomPostNested(c, "") } -func (cfg *AutoPostCreator) CreateRandomPostNested(c *request.Context, rootId string) (*model.Post, error) { +func (cfg *AutoPostCreator) CreateRandomPostNested(c request.CTX, rootId string) (*model.Post, error) { var fileIDs []string if cfg.HasImage { var err error diff --git a/app/slashcommands/auto_users.go b/app/slashcommands/auto_users.go index d100f32420..f7a9c588e0 100644 --- a/app/slashcommands/auto_users.go +++ b/app/slashcommands/auto_users.go @@ -78,7 +78,7 @@ func CreateBasicUser(a *app.App, client *model.Client4) error { return nil } -func (cfg *AutoUserCreator) createRandomUser(c *request.Context) (*model.User, error) { +func (cfg *AutoUserCreator) createRandomUser(c request.CTX) (*model.User, error) { var userEmail string var userName string if cfg.Fuzzy { @@ -113,7 +113,7 @@ func (cfg *AutoUserCreator) createRandomUser(c *request.Context) (*model.User, e return ruser, nil } -func (cfg *AutoUserCreator) CreateTestUsers(c *request.Context, num utils.Range) ([]*model.User, error) { +func (cfg *AutoUserCreator) CreateTestUsers(c request.CTX, num utils.Range) ([]*model.User, error) { numUsers := utils.RandIntFromRange(num) users := make([]*model.User, numUsers) diff --git a/app/slashcommands/command_away.go b/app/slashcommands/command_away.go index c49877031b..7ae0327849 100644 --- a/app/slashcommands/command_away.go +++ b/app/slashcommands/command_away.go @@ -34,7 +34,7 @@ func (*AwayProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Command } } -func (*AwayProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse { +func (*AwayProvider) DoCommand(a *app.App, _ request.CTX, args *model.CommandArgs, message string) *model.CommandResponse { a.SetStatusAwayIfNeeded(args.UserId, true) return &model.CommandResponse{ResponseType: model.CommandResponseTypeEphemeral, Text: args.T("api.command_away.success")} diff --git a/app/slashcommands/command_channel_header.go b/app/slashcommands/command_channel_header.go index 4096174190..2c5f2555a8 100644 --- a/app/slashcommands/command_channel_header.go +++ b/app/slashcommands/command_channel_header.go @@ -35,7 +35,7 @@ func (*HeaderProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Comma } } -func (*HeaderProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse { +func (*HeaderProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse { channel, err := a.GetChannel(c, args.ChannelId) if err != nil { return &model.CommandResponse{ diff --git a/app/slashcommands/command_channel_purpose.go b/app/slashcommands/command_channel_purpose.go index dfe0824470..32307f1c50 100644 --- a/app/slashcommands/command_channel_purpose.go +++ b/app/slashcommands/command_channel_purpose.go @@ -35,7 +35,7 @@ func (*PurposeProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Comm } } -func (*PurposeProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse { +func (*PurposeProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse { channel, err := a.GetChannel(c, args.ChannelId) if err != nil { return &model.CommandResponse{ diff --git a/app/slashcommands/command_channel_rename.go b/app/slashcommands/command_channel_rename.go index ec0655b3a9..8b3009c918 100644 --- a/app/slashcommands/command_channel_rename.go +++ b/app/slashcommands/command_channel_rename.go @@ -38,7 +38,7 @@ func (*RenameProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Comma } } -func (*RenameProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse { +func (*RenameProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse { channel, err := a.GetChannel(c, args.ChannelId) if err != nil { return &model.CommandResponse{ diff --git a/app/slashcommands/command_code.go b/app/slashcommands/command_code.go index 0add5d18ee..ca15636d07 100644 --- a/app/slashcommands/command_code.go +++ b/app/slashcommands/command_code.go @@ -37,7 +37,7 @@ func (*CodeProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Command } } -func (*CodeProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse { +func (*CodeProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse { if message == "" { return &model.CommandResponse{Text: args.T("api.command_code.message.app_error"), ResponseType: model.CommandResponseTypeEphemeral} } diff --git a/app/slashcommands/command_custom_status.go b/app/slashcommands/command_custom_status.go index 74749b5f85..0353d46132 100644 --- a/app/slashcommands/command_custom_status.go +++ b/app/slashcommands/command_custom_status.go @@ -41,7 +41,7 @@ func (*CustomStatusProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model } } -func (*CustomStatusProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse { +func (*CustomStatusProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse { if !*a.Config().TeamSettings.EnableCustomUserStatuses { return nil } diff --git a/app/slashcommands/command_dnd.go b/app/slashcommands/command_dnd.go index 7a2d4aa01f..14e85503f2 100644 --- a/app/slashcommands/command_dnd.go +++ b/app/slashcommands/command_dnd.go @@ -34,7 +34,7 @@ func (*DndProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Command } } -func (*DndProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse { +func (*DndProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse { a.SetStatusDoNotDisturb(args.UserId) return &model.CommandResponse{ResponseType: model.CommandResponseTypeEphemeral, Text: args.T("api.command_dnd.success")} diff --git a/app/slashcommands/command_echo.go b/app/slashcommands/command_echo.go index 3b66a73384..fff24ff886 100644 --- a/app/slashcommands/command_echo.go +++ b/app/slashcommands/command_echo.go @@ -42,7 +42,7 @@ func (*EchoProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Command } } -func (*EchoProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse { +func (*EchoProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse { if message == "" { return &model.CommandResponse{Text: args.T("api.command_echo.message.app_error"), ResponseType: model.CommandResponseTypeEphemeral} } diff --git a/app/slashcommands/command_expand_collapse.go b/app/slashcommands/command_expand_collapse.go index 056725e440..ecfc832251 100644 --- a/app/slashcommands/command_expand_collapse.go +++ b/app/slashcommands/command_expand_collapse.go @@ -56,11 +56,11 @@ func (*CollapseProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Com } } -func (*ExpandProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse { +func (*ExpandProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse { return setCollapsePreference(a, args, false) } -func (*CollapseProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse { +func (*CollapseProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse { return setCollapsePreference(a, args, true) } diff --git a/app/slashcommands/command_groupmsg.go b/app/slashcommands/command_groupmsg.go index c728c2330b..2d57b9bf3b 100644 --- a/app/slashcommands/command_groupmsg.go +++ b/app/slashcommands/command_groupmsg.go @@ -39,7 +39,7 @@ func (*groupmsgProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Com } } -func (*groupmsgProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse { +func (*groupmsgProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse { targetUsers := map[string]*model.User{} targetUsersSlice := []string{args.UserId} invalidUsernames := []string{} diff --git a/app/slashcommands/command_help.go b/app/slashcommands/command_help.go index 2e627be706..a319e7f6be 100644 --- a/app/slashcommands/command_help.go +++ b/app/slashcommands/command_help.go @@ -34,7 +34,7 @@ func (h *HelpProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Comma } } -func (h *HelpProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse { +func (h *HelpProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse { helpLink := *a.Config().SupportSettings.HelpLink if helpLink == "" { diff --git a/app/slashcommands/command_invite.go b/app/slashcommands/command_invite.go index 60f217cd3e..24c569c8a3 100644 --- a/app/slashcommands/command_invite.go +++ b/app/slashcommands/command_invite.go @@ -38,7 +38,7 @@ func (*InviteProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Comma } } -func (*InviteProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse { +func (*InviteProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse { if message == "" { return &model.CommandResponse{ Text: args.T("api.command_invite.missing_message.app_error"), diff --git a/app/slashcommands/command_invite_people.go b/app/slashcommands/command_invite_people.go index 6ec723f6f2..b9acedaac9 100644 --- a/app/slashcommands/command_invite_people.go +++ b/app/slashcommands/command_invite_people.go @@ -42,7 +42,7 @@ func (*InvitePeopleProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model } } -func (*InvitePeopleProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse { +func (*InvitePeopleProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse { if !a.HasPermissionToTeam(args.UserId, args.TeamId, model.PermissionInviteUser) { return &model.CommandResponse{Text: args.T("api.command_invite_people.permission.app_error"), ResponseType: model.CommandResponseTypeEphemeral} } diff --git a/app/slashcommands/command_join.go b/app/slashcommands/command_join.go index d15493217d..504d631630 100644 --- a/app/slashcommands/command_join.go +++ b/app/slashcommands/command_join.go @@ -37,7 +37,7 @@ func (*JoinProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Command } } -func (*JoinProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse { +func (*JoinProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse { channelName := strings.ToLower(message) if strings.HasPrefix(message, "~") { diff --git a/app/slashcommands/command_leave.go b/app/slashcommands/command_leave.go index 2010fc305d..2e9047d29a 100644 --- a/app/slashcommands/command_leave.go +++ b/app/slashcommands/command_leave.go @@ -34,7 +34,7 @@ func (*LeaveProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Comman } } -func (*LeaveProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse { +func (*LeaveProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse { var channel *model.Channel var noChannelErr *model.AppError if channel, noChannelErr = a.GetChannel(c, args.ChannelId); noChannelErr != nil { diff --git a/app/slashcommands/command_loadtest.go b/app/slashcommands/command_loadtest.go index 3fcf0d1037..d953ddd9fb 100644 --- a/app/slashcommands/command_loadtest.go +++ b/app/slashcommands/command_loadtest.go @@ -115,16 +115,16 @@ func (*LoadTestProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Com } } -func (lt *LoadTestProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse { +func (lt *LoadTestProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse { commandResponse, err := lt.doCommand(a, c, args, message) if err != nil { - mlog.Error("failed command /"+CmdTest, mlog.Err(err)) + c.Logger().Error("failed command /"+CmdTest, mlog.Err(err)) } return commandResponse } -func (lt *LoadTestProvider) doCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) (*model.CommandResponse, error) { +func (lt *LoadTestProvider) doCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) (*model.CommandResponse, error) { //This command is only available when EnableTesting is true if !*a.Config().ServiceSettings.EnableTesting { return &model.CommandResponse{}, nil @@ -181,7 +181,7 @@ func (*LoadTestProvider) HelpCommand(args *model.CommandArgs, message string) *m return &model.CommandResponse{Text: usage, ResponseType: model.CommandResponseTypeEphemeral} } -func (*LoadTestProvider) SetupCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) (*model.CommandResponse, error) { +func (*LoadTestProvider) SetupCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) (*model.CommandResponse, error) { tokens := strings.Fields(strings.TrimPrefix(message, "setup")) doTeams := contains(tokens, "teams") doFuzz := contains(tokens, "fuzz") @@ -242,10 +242,10 @@ func (*LoadTestProvider) SetupCommand(a *app.App, c *request.Context, args *mode return &model.CommandResponse{Text: "Failed to create testing environment", ResponseType: model.CommandResponseTypeEphemeral}, err } - mlog.Info("Testing environment created") + c.Logger().Info("Testing environment created") for i := 0; i < len(environment.Teams); i++ { - mlog.Info("Team Created: " + environment.Teams[i].Name) - mlog.Info("\t User to login: " + environment.Environments[i].Users[0].Email + ", " + UserPassword) + c.Logger().Info("Team Created: " + environment.Teams[i].Name) + c.Logger().Info("\t User to login: " + environment.Environments[i].Users[0].Email + ", " + UserPassword) } } else { team, err := a.Srv().Store.Team().Get(args.TeamId) @@ -267,7 +267,7 @@ func (*LoadTestProvider) SetupCommand(a *app.App, c *request.Context, args *mode return &model.CommandResponse{Text: "Created environment", ResponseType: model.CommandResponseTypeEphemeral}, nil } -func (*LoadTestProvider) ActivateUserCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) (*model.CommandResponse, error) { +func (*LoadTestProvider) ActivateUserCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) (*model.CommandResponse, error) { user_id := strings.TrimSpace(strings.TrimPrefix(message, "activate_user")) if err := a.UpdateUserActive(c, user_id, true); err != nil { return &model.CommandResponse{Text: "Failed to activate user", ResponseType: model.CommandResponseTypeEphemeral}, err @@ -276,7 +276,7 @@ func (*LoadTestProvider) ActivateUserCommand(a *app.App, c *request.Context, arg return &model.CommandResponse{Text: "Activated user", ResponseType: model.CommandResponseTypeEphemeral}, nil } -func (*LoadTestProvider) DeActivateUserCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) (*model.CommandResponse, error) { +func (*LoadTestProvider) DeActivateUserCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) (*model.CommandResponse, error) { user_id := strings.TrimSpace(strings.TrimPrefix(message, "deactivate_user")) if err := a.UpdateUserActive(c, user_id, false); err != nil { return &model.CommandResponse{Text: "Failed to deactivate user", ResponseType: model.CommandResponseTypeEphemeral}, err @@ -285,7 +285,7 @@ func (*LoadTestProvider) DeActivateUserCommand(a *app.App, c *request.Context, a return &model.CommandResponse{Text: "DeActivated user", ResponseType: model.CommandResponseTypeEphemeral}, nil } -func (*LoadTestProvider) UsersCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) (*model.CommandResponse, error) { +func (*LoadTestProvider) UsersCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) (*model.CommandResponse, error) { cmd := strings.TrimSpace(strings.TrimPrefix(message, "users")) doFuzz := false @@ -314,7 +314,7 @@ func (*LoadTestProvider) UsersCommand(a *app.App, c *request.Context, args *mode return &model.CommandResponse{Text: "Added users", ResponseType: model.CommandResponseTypeEphemeral}, nil } -func (*LoadTestProvider) ChannelsCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) (*model.CommandResponse, error) { +func (*LoadTestProvider) ChannelsCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) (*model.CommandResponse, error) { cmd := strings.TrimSpace(strings.TrimPrefix(message, "channels")) doFuzz := false @@ -342,7 +342,7 @@ func (*LoadTestProvider) ChannelsCommand(a *app.App, c *request.Context, args *m return &model.CommandResponse{Text: "Added channels", ResponseType: model.CommandResponseTypeEphemeral}, nil } -func (*LoadTestProvider) DMsCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) (*model.CommandResponse, error) { +func (*LoadTestProvider) DMsCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) (*model.CommandResponse, error) { cmd := strings.TrimSpace(strings.TrimPrefix(message, "dms")) channelsr, ok := parseRange(cmd, "") @@ -358,7 +358,7 @@ func (*LoadTestProvider) DMsCommand(a *app.App, c *request.Context, args *model. return &model.CommandResponse{Text: "Added DMs", ResponseType: model.CommandResponseTypeEphemeral}, nil } -func (*LoadTestProvider) ThreadedPostCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) (*model.CommandResponse, error) { +func (*LoadTestProvider) ThreadedPostCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) (*model.CommandResponse, error) { var usernames []string options := &model.UserGetOptions{InTeamId: args.TeamId, Page: 0, PerPage: 1000} if profileUsers, err := a.Srv().Store.User().GetProfiles(options); err == nil { @@ -384,7 +384,7 @@ func (*LoadTestProvider) ThreadedPostCommand(a *app.App, c *request.Context, arg return &model.CommandResponse{Text: "Added threaded post", ResponseType: model.CommandResponseTypeEphemeral}, nil } -func (*LoadTestProvider) PostsCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) (*model.CommandResponse, error) { +func (*LoadTestProvider) PostsCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) (*model.CommandResponse, error) { cmd := strings.TrimSpace(strings.TrimPrefix(message, "posts")) doFuzz := false @@ -486,7 +486,7 @@ func (*LoadTestProvider) PostCommand(a *app.App, c request.CTX, args *model.Comm return &model.CommandResponse{Text: "Added a post to " + channel.DisplayName, ResponseType: model.CommandResponseTypeEphemeral}, nil } -func (*LoadTestProvider) URLCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) (*model.CommandResponse, error) { +func (*LoadTestProvider) URLCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) (*model.CommandResponse, error) { url := strings.TrimSpace(strings.TrimPrefix(message, "url")) if url == "" { return &model.CommandResponse{Text: "Command must contain a url", ResponseType: model.CommandResponseTypeEphemeral}, nil @@ -540,7 +540,7 @@ func (*LoadTestProvider) URLCommand(a *app.App, c *request.Context, args *model. return &model.CommandResponse{Text: "Loaded data", ResponseType: model.CommandResponseTypeEphemeral}, nil } -func (*LoadTestProvider) JsonCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) (*model.CommandResponse, error) { +func (*LoadTestProvider) JsonCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) (*model.CommandResponse, error) { url := strings.TrimSpace(strings.TrimPrefix(message, "json")) if url == "" { return &model.CommandResponse{Text: "Command must contain a url", ResponseType: model.CommandResponseTypeEphemeral}, nil diff --git a/app/slashcommands/command_logout.go b/app/slashcommands/command_logout.go index 645a8534a3..40bfed52d0 100644 --- a/app/slashcommands/command_logout.go +++ b/app/slashcommands/command_logout.go @@ -35,7 +35,7 @@ func (*LogoutProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Comma } } -func (*LogoutProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse { +func (*LogoutProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse { // Actual logout is handled client side. return &model.CommandResponse{GotoLocation: "/login"} } diff --git a/app/slashcommands/command_me.go b/app/slashcommands/command_me.go index a6f3a2db37..a583e3390a 100644 --- a/app/slashcommands/command_me.go +++ b/app/slashcommands/command_me.go @@ -35,7 +35,7 @@ func (*MeProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Command { } } -func (*MeProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse { +func (*MeProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse { return &model.CommandResponse{ ResponseType: model.CommandResponseTypeInChannel, Type: model.PostTypeMe, diff --git a/app/slashcommands/command_msg.go b/app/slashcommands/command_msg.go index e64379ee23..b801c4a34c 100644 --- a/app/slashcommands/command_msg.go +++ b/app/slashcommands/command_msg.go @@ -40,7 +40,7 @@ func (*msgProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Command } } -func (*msgProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse { +func (*msgProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse { splitMessage := strings.SplitN(message, " ", 2) parsedMessage := "" diff --git a/app/slashcommands/command_mute.go b/app/slashcommands/command_mute.go index 96319b86fc..747f86d1e7 100644 --- a/app/slashcommands/command_mute.go +++ b/app/slashcommands/command_mute.go @@ -37,7 +37,7 @@ func (*MuteProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Command } } -func (*MuteProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse { +func (*MuteProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse { var channel *model.Channel var noChannelErr *model.AppError diff --git a/app/slashcommands/command_offline.go b/app/slashcommands/command_offline.go index f89cb85c3f..b532bb91bd 100644 --- a/app/slashcommands/command_offline.go +++ b/app/slashcommands/command_offline.go @@ -34,7 +34,7 @@ func (*OfflineProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Comm } } -func (*OfflineProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse { +func (*OfflineProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse { a.SetStatusOffline(args.UserId, true) return &model.CommandResponse{ResponseType: model.CommandResponseTypeEphemeral, Text: args.T("api.command_offline.success")} diff --git a/app/slashcommands/command_online.go b/app/slashcommands/command_online.go index ab43cb07b5..5fb45c1d46 100644 --- a/app/slashcommands/command_online.go +++ b/app/slashcommands/command_online.go @@ -34,7 +34,7 @@ func (*OnlineProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Comma } } -func (*OnlineProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse { +func (*OnlineProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse { a.SetStatusOnline(args.UserId, true) return &model.CommandResponse{ResponseType: model.CommandResponseTypeEphemeral, Text: args.T("api.command_online.success")} diff --git a/app/slashcommands/command_remote.go b/app/slashcommands/command_remote.go index a17737a8ae..bc0b3d03e2 100644 --- a/app/slashcommands/command_remote.go +++ b/app/slashcommands/command_remote.go @@ -69,7 +69,7 @@ func (rp *RemoteProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Co } } -func (rp *RemoteProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse { +func (rp *RemoteProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse { if !a.HasPermissionTo(args.UserId, model.PermissionManageSecureConnections) { return responsef(args.T("api.command_remote.permission_required", map[string]any{"Permission": "manage_secure_connections"})) } diff --git a/app/slashcommands/command_remove.go b/app/slashcommands/command_remove.go index ce95e67a58..935136f8fe 100644 --- a/app/slashcommands/command_remove.go +++ b/app/slashcommands/command_remove.go @@ -57,15 +57,15 @@ func (*KickProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Command } } -func (*RemoveProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse { +func (*RemoveProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse { return doCommand(a, c, args, message) } -func (*KickProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse { +func (*KickProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse { return doCommand(a, c, args, message) } -func doCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse { +func doCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse { channel, err := a.GetChannel(c, args.ChannelId) if err != nil { return &model.CommandResponse{ diff --git a/app/slashcommands/command_search.go b/app/slashcommands/command_search.go index 2bc8dc3644..025f3ce5b6 100644 --- a/app/slashcommands/command_search.go +++ b/app/slashcommands/command_search.go @@ -35,7 +35,7 @@ func (search *SearchProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *mode } } -func (search *SearchProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse { +func (search *SearchProvider) DoCommand(a *app.App, c request.CTX, 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"), diff --git a/app/slashcommands/command_settings.go b/app/slashcommands/command_settings.go index 7904be535c..7d479954ee 100644 --- a/app/slashcommands/command_settings.go +++ b/app/slashcommands/command_settings.go @@ -35,7 +35,7 @@ func (settings *SettingsProvider) GetCommand(a *app.App, T i18n.TranslateFunc) * } } -func (settings *SettingsProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse { +func (settings *SettingsProvider) DoCommand(a *app.App, c request.CTX, 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_settings.unsupported.app_error"), diff --git a/app/slashcommands/command_share.go b/app/slashcommands/command_share.go index 5d526f8640..997411fa31 100644 --- a/app/slashcommands/command_share.go +++ b/app/slashcommands/command_share.go @@ -120,7 +120,7 @@ func (sp *ShareProvider) getAutoCompleteUnInviteRemote(a *app.App, _ *model.Comm } } -func (sp *ShareProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse { +func (sp *ShareProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse { if !a.HasPermissionTo(args.UserId, model.PermissionManageSharedChannels) { return responsef(args.T("api.command_share.permission_required", map[string]any{"Permission": "manage_shared_channels"})) } diff --git a/app/slashcommands/command_shortcuts.go b/app/slashcommands/command_shortcuts.go index a4f06b028b..cae126476f 100644 --- a/app/slashcommands/command_shortcuts.go +++ b/app/slashcommands/command_shortcuts.go @@ -35,7 +35,7 @@ func (*ShortcutsProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Co } } -func (*ShortcutsProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse { +func (*ShortcutsProvider) DoCommand(a *app.App, c request.CTX, 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_shortcuts.unsupported.app_error"), diff --git a/app/slashcommands/command_shrug.go b/app/slashcommands/command_shrug.go index 13a9654876..954b0f635a 100644 --- a/app/slashcommands/command_shrug.go +++ b/app/slashcommands/command_shrug.go @@ -35,7 +35,7 @@ func (*ShrugProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Comman } } -func (*ShrugProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse { +func (*ShrugProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse { rmsg := `¯\\\_(ツ)\_/¯` if message != "" { rmsg = message + " " + rmsg diff --git a/app/slashcommands/command_test.go b/app/slashcommands/command_test.go index 0ed82c9778..720ea99380 100644 --- a/app/slashcommands/command_test.go +++ b/app/slashcommands/command_test.go @@ -525,7 +525,7 @@ func TestMentionsToTeamMembers(t *testing.T) { } for _, data := range fixture { - actualMap := th.App.MentionsToTeamMembers(data.message, data.inTeam) + actualMap := th.App.MentionsToTeamMembers(th.Context, data.message, data.inTeam) require.Equal(t, actualMap, data.expectedMap) } } diff --git a/app/user.go b/app/user.go index 844402d2f6..1dfa276012 100644 --- a/app/user.go +++ b/app/user.go @@ -1220,7 +1220,7 @@ func (a *App) UpdateUser(c request.CTX, user *model.User, sendNotifications bool return userUpdate.New, nil } -func (a *App) UpdateUserActive(c *request.Context, userID string, active bool) *model.AppError { +func (a *App) UpdateUserActive(c request.CTX, userID string, active bool) *model.AppError { user, err := a.GetUser(userID) if err != nil { diff --git a/cmd/mattermost/commands/export.go b/cmd/mattermost/commands/export.go index baac81757d..2fa5295986 100644 --- a/cmd/mattermost/commands/export.go +++ b/cmd/mattermost/commands/export.go @@ -10,6 +10,7 @@ import ( "path/filepath" "time" + "github.com/mattermost/mattermost-server/v6/app/request" "github.com/mattermost/mattermost-server/v6/audit" "github.com/mattermost/mattermost-server/v6/model" @@ -229,7 +230,7 @@ func bulkExportCmdF(command *cobra.Command, args []string) error { var opts model.BulkExportOpts opts.IncludeAttachments = attachments opts.CreateArchive = archive - if err := a.BulkExport(fileWriter, filepath.Dir(outPath), opts); err != nil { + if err := a.BulkExport(request.EmptyContext(a.Log()), fileWriter, filepath.Dir(outPath), opts); err != nil { CommandPrintErrorln(err.Error()) return err } diff --git a/jobs/export_process/worker.go b/jobs/export_process/worker.go index ba6f5ecfe8..de5ee69489 100644 --- a/jobs/export_process/worker.go +++ b/jobs/export_process/worker.go @@ -7,6 +7,7 @@ import ( "io" "path/filepath" + "github.com/mattermost/mattermost-server/v6/app/request" "github.com/mattermost/mattermost-server/v6/jobs" "github.com/mattermost/mattermost-server/v6/model" "github.com/mattermost/mattermost-server/v6/services/configservice" @@ -18,7 +19,8 @@ const jobName = "ExportProcess" type AppIface interface { configservice.ConfigService WriteFile(fr io.Reader, path string) (int64, *model.AppError) - BulkExport(writer io.Writer, outPath string, opts model.BulkExportOpts) *model.AppError + BulkExport(ctx request.CTX, writer io.Writer, outPath string, opts model.BulkExportOpts) *model.AppError + Log() *mlog.Logger } func MakeWorker(jobServer *jobs.JobServer, app AppIface) model.Worker { @@ -45,7 +47,7 @@ func MakeWorker(jobServer *jobs.JobServer, app AppIface) model.Worker { errCh <- appErr }() - appErr := app.BulkExport(wr, outPath, opts) + appErr := app.BulkExport(request.EmptyContext(app.Log()), wr, outPath, opts) if err := wr.Close(); err != nil { mlog.Warn("Worker: error closing writer") } diff --git a/services/sharedchannel/mock_AppIface_test.go b/services/sharedchannel/mock_AppIface_test.go index 2a3613cad2..f95df3ac6e 100644 --- a/services/sharedchannel/mock_AppIface_test.go +++ b/services/sharedchannel/mock_AppIface_test.go @@ -269,13 +269,13 @@ func (_m *MockAppIface) InvalidateCacheForUser(userID string) { _m.Called(userID) } -// MentionsToTeamMembers provides a mock function with given fields: message, teamID -func (_m *MockAppIface) MentionsToTeamMembers(message string, teamID string) model.UserMentionMap { - ret := _m.Called(message, teamID) +// MentionsToTeamMembers provides a mock function with given fields: c, message, teamID +func (_m *MockAppIface) MentionsToTeamMembers(c request.CTX, message string, teamID string) model.UserMentionMap { + ret := _m.Called(c, message, teamID) var r0 model.UserMentionMap - if rf, ok := ret.Get(0).(func(string, string) model.UserMentionMap); ok { - r0 = rf(message, teamID) + if rf, ok := ret.Get(0).(func(request.CTX, string, string) model.UserMentionMap); ok { + r0 = rf(c, message, teamID) } else { if ret.Get(0) != nil { r0 = ret.Get(0).(model.UserMentionMap) diff --git a/services/sharedchannel/service.go b/services/sharedchannel/service.go index c8af3c02a1..f73b0350b7 100644 --- a/services/sharedchannel/service.go +++ b/services/sharedchannel/service.go @@ -59,7 +59,7 @@ type AppIface interface { PatchChannelModerationsForChannel(c request.CTX, channel *model.Channel, channelModerationsPatch []*model.ChannelModerationPatch) ([]*model.ChannelModeration, *model.AppError) CreateUploadSession(c request.CTX, us *model.UploadSession) (*model.UploadSession, *model.AppError) FileReader(path string) (filestore.ReadCloseSeeker, *model.AppError) - MentionsToTeamMembers(message, teamID string) model.UserMentionMap + MentionsToTeamMembers(c request.CTX, message, teamID string) model.UserMentionMap GetProfileImage(user *model.User) ([]byte, bool, *model.AppError) InvalidateCacheForUser(userID string) NotifySharedChannelUserUpdate(user *model.User) diff --git a/services/sharedchannel/sync_send_remote.go b/services/sharedchannel/sync_send_remote.go index d6efd49abf..010970fff1 100644 --- a/services/sharedchannel/sync_send_remote.go +++ b/services/sharedchannel/sync_send_remote.go @@ -11,6 +11,7 @@ import ( "github.com/wiggin77/merror" + "github.com/mattermost/mattermost-server/v6/app/request" "github.com/mattermost/mattermost-server/v6/model" "github.com/mattermost/mattermost-server/v6/services/remotecluster" "github.com/mattermost/mattermost-server/v6/shared/mlog" @@ -271,7 +272,7 @@ func (scs *Service) fetchPostUsersForSync(sd *syncData) error { userIDs[post.UserId] = p2mm{} // get mentions and users for each mention - mentionMap := scs.app.MentionsToTeamMembers(post.Message, sc.TeamId) + mentionMap := scs.app.MentionsToTeamMembers(request.EmptyContext(scs.server.GetLogger()), post.Message, sc.TeamId) for _, userID := range mentionMap { userIDs[userID] = p2mm{ post: post,