Monorepo for Tangled
tangled.org
1package pulls
2
3import (
4 "net/http"
5 "strconv"
6
7 "tangled.org/core/appview/models"
8 "tangled.org/core/appview/pages"
9
10 "github.com/go-chi/chi/v5"
11)
12
13func (s *Pulls) PullComment(w http.ResponseWriter, r *http.Request) {
14 l := s.logger.With("handler", "PullComment")
15
16 user := s.oauth.GetMultiAccountUser(r)
17 if user != nil {
18 l = l.With("user", user.Did)
19 }
20
21 pull, ok := r.Context().Value("pull").(*models.Pull)
22 if !ok {
23 l.Error("failed to get pull")
24 s.pages.Notice(w, "pull-error", "Failed to edit patch. Try again later.")
25 return
26 }
27 l = l.With("pull_id", pull.PullId, "pull_owner", pull.OwnerDid)
28
29 roundNumberStr := chi.URLParam(r, "round")
30 roundNumber, err := strconv.Atoi(roundNumberStr)
31 if err != nil || roundNumber >= len(pull.Submissions) {
32 http.Error(w, "bad round id", http.StatusBadRequest)
33 l.Error("failed to parse round id", "err", err, "round_number_str", roundNumberStr)
34 return
35 }
36
37 switch r.Method {
38 case http.MethodGet:
39 s.pages.PullNewCommentFragment(w, pages.PullNewCommentParams{
40 LoggedInUser: user,
41 RepoInfo: s.repoResolver.GetRepoInfo(r, user),
42 Pull: pull,
43 RoundNumber: roundNumber,
44 })
45 return
46 }
47}