gitea源码

reaction.go 1.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // Copyright 2024 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package issue
  4. import (
  5. "context"
  6. issues_model "code.gitea.io/gitea/models/issues"
  7. user_model "code.gitea.io/gitea/models/user"
  8. )
  9. // CreateIssueReaction creates a reaction on an issue.
  10. func CreateIssueReaction(ctx context.Context, doer *user_model.User, issue *issues_model.Issue, content string) (*issues_model.Reaction, error) {
  11. if err := issue.LoadRepo(ctx); err != nil {
  12. return nil, err
  13. }
  14. if user_model.IsUserBlockedBy(ctx, doer, issue.PosterID, issue.Repo.OwnerID) {
  15. return nil, user_model.ErrBlockedUser
  16. }
  17. return issues_model.CreateReaction(ctx, &issues_model.ReactionOptions{
  18. Type: content,
  19. DoerID: doer.ID,
  20. IssueID: issue.ID,
  21. })
  22. }
  23. // CreateCommentReaction creates a reaction on a comment.
  24. func CreateCommentReaction(ctx context.Context, doer *user_model.User, comment *issues_model.Comment, content string) (*issues_model.Reaction, error) {
  25. if err := comment.LoadIssue(ctx); err != nil {
  26. return nil, err
  27. }
  28. if err := comment.Issue.LoadRepo(ctx); err != nil {
  29. return nil, err
  30. }
  31. if user_model.IsUserBlockedBy(ctx, doer, comment.Issue.PosterID, comment.Issue.Repo.OwnerID, comment.PosterID) {
  32. return nil, user_model.ErrBlockedUser
  33. }
  34. return issues_model.CreateReaction(ctx, &issues_model.ReactionOptions{
  35. Type: content,
  36. DoerID: doer.ID,
  37. IssueID: comment.Issue.ID,
  38. CommentID: comment.ID,
  39. })
  40. }