diff options
author | Jimmy Praet <jimmy.praet@telenet.be> | 2024-02-25 07:00:55 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-25 06:00:55 +0000 |
commit | 2e33671f2c1e98759e4fd2a90944c534cfdf5776 (patch) | |
tree | f8d1343d2ecbdf9b0bd8ed5cd7f1a48eeb33a1af /models | |
parent | 1ef87773b1e75b99b4b842303542fd17d9c2e6f7 (diff) | |
download | gitea-2e33671f2c1e98759e4fd2a90944c534cfdf5776.tar.gz gitea-2e33671f2c1e98759e4fd2a90944c534cfdf5776.zip |
Add attachment support for code review comments (#29220)
Fixes #27960, #24411, #12183
---------
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
Diffstat (limited to 'models')
-rw-r--r-- | models/issues/comment.go | 37 |
1 files changed, 22 insertions, 15 deletions
diff --git a/models/issues/comment.go b/models/issues/comment.go index fa0eb3cc0f..c7b22f3cca 100644 --- a/models/issues/comment.go +++ b/models/issues/comment.go @@ -855,6 +855,9 @@ func updateCommentInfos(ctx context.Context, opts *CreateCommentOptions, comment // Check comment type. switch opts.Type { case CommentTypeCode: + if err = updateAttachments(ctx, opts, comment); err != nil { + return err + } if comment.ReviewID != 0 { if comment.Review == nil { if err := comment.loadReview(ctx); err != nil { @@ -872,22 +875,9 @@ func updateCommentInfos(ctx context.Context, opts *CreateCommentOptions, comment } fallthrough case CommentTypeReview: - // Check attachments - attachments, err := repo_model.GetAttachmentsByUUIDs(ctx, opts.Attachments) - if err != nil { - return fmt.Errorf("getAttachmentsByUUIDs [uuids: %v]: %w", opts.Attachments, err) - } - - for i := range attachments { - attachments[i].IssueID = opts.Issue.ID - attachments[i].CommentID = comment.ID - // No assign value could be 0, so ignore AllCols(). - if _, err = db.GetEngine(ctx).ID(attachments[i].ID).Update(attachments[i]); err != nil { - return fmt.Errorf("update attachment [%d]: %w", attachments[i].ID, err) - } + if err = updateAttachments(ctx, opts, comment); err != nil { + return err } - - comment.Attachments = attachments case CommentTypeReopen, CommentTypeClose: if err = repo_model.UpdateRepoIssueNumbers(ctx, opts.Issue.RepoID, opts.Issue.IsPull, true); err != nil { return err @@ -897,6 +887,23 @@ func updateCommentInfos(ctx context.Context, opts *CreateCommentOptions, comment return UpdateIssueCols(ctx, opts.Issue, "updated_unix") } +func updateAttachments(ctx context.Context, opts *CreateCommentOptions, comment *Comment) error { + attachments, err := repo_model.GetAttachmentsByUUIDs(ctx, opts.Attachments) + if err != nil { + return fmt.Errorf("getAttachmentsByUUIDs [uuids: %v]: %w", opts.Attachments, err) + } + for i := range attachments { + attachments[i].IssueID = opts.Issue.ID + attachments[i].CommentID = comment.ID + // No assign value could be 0, so ignore AllCols(). + if _, err = db.GetEngine(ctx).ID(attachments[i].ID).Update(attachments[i]); err != nil { + return fmt.Errorf("update attachment [%d]: %w", attachments[i].ID, err) + } + } + comment.Attachments = attachments + return nil +} + func createDeadlineComment(ctx context.Context, doer *user_model.User, issue *Issue, newDeadlineUnix timeutil.TimeStamp) (*Comment, error) { var content string var commentType CommentType |