From cc07b9ca3773573144263e4293f7a2ca7e3b9e5e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=B5=B5=E6=99=BA=E8=B6=85?= <1012112796@qq.com>
Date: Sat, 11 Apr 2020 12:44:50 +0800
Subject: [PATCH] Fix CreateComment for SQLite and JS click event on Request
 Review (#11040)

* fix some bug about Request review

* fix ``CreateComment`` wrong using ,it will not work when use Sqlite
* fix wrong js click event code , it will send wrong data when it has
many choices

Signed-off-by: a1012112796 <1012112796@qq.com>

* Apply suggestions from code review

Co-Authored-By: Lauris BH <lauris@nix.lv>

* add getReviewerByIssueIDAndUserID
fix wrong conditions check in initIssueComments after #10972

* call CI again

Co-authored-by: Lauris BH <lauris@nix.lv>
Co-authored-by: techknowlogick <techknowlogick@gitea.io>
Co-authored-by: guillep2k <18600385+guillep2k@users.noreply.github.com>
---
 models/review.go    | 10 +++++++---
 web_src/js/index.js | 18 +++++++++++-------
 2 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/models/review.go b/models/review.go
index 3f7223154e..d6bb77925e 100644
--- a/models/review.go
+++ b/models/review.go
@@ -395,9 +395,13 @@ func GetReviewersByIssueID(issueID int64) (reviews []*Review, err error) {
 
 // GetReviewerByIssueIDAndUserID get the latest review of reviewer for a pull request
 func GetReviewerByIssueIDAndUserID(issueID, userID int64) (review *Review, err error) {
+	return getReviewerByIssueIDAndUserID(x, issueID, userID)
+}
+
+func getReviewerByIssueIDAndUserID(e Engine, issueID, userID int64) (review *Review, err error) {
 	review = new(Review)
 
-	if _, err := x.SQL("SELECT * FROM review WHERE id IN (SELECT max(id) as id FROM review WHERE issue_id = ? AND reviewer_id = ? AND type in (?, ?, ?))",
+	if _, err := e.SQL("SELECT * FROM review WHERE id IN (SELECT max(id) as id FROM review WHERE issue_id = ? AND reviewer_id = ? AND type in (?, ?, ?))",
 		issueID, userID, ReviewTypeApprove, ReviewTypeReject, ReviewTypeRequest).
 		Get(review); err != nil {
 		return nil, err
@@ -559,7 +563,7 @@ func RemoveRewiewRequest(issue *Issue, reviewer *User, doer *User) (comment *Com
 		// recalculate which is the latest official review from that user
 		var review *Review
 
-		review, err = GetReviewerByIssueIDAndUserID(issue.ID, reviewer.ID)
+		review, err = getReviewerByIssueIDAndUserID(sess, issue.ID, reviewer.ID)
 		if err != nil {
 			return nil, err
 		}
@@ -575,7 +579,7 @@ func RemoveRewiewRequest(issue *Issue, reviewer *User, doer *User) (comment *Com
 		return nil, err
 	}
 
-	comment, err = CreateComment(&CreateCommentOptions{
+	comment, err = createComment(sess, &CreateCommentOptions{
 		Type:            CommentTypeReviewRequest,
 		Doer:            doer,
 		Repo:            issue.Repo,
diff --git a/web_src/js/index.js b/web_src/js/index.js
index c56abdde88..6476b2cfbf 100644
--- a/web_src/js/index.js
+++ b/web_src/js/index.js
@@ -661,17 +661,21 @@ function initInstall() {
 }
 
 function initIssueComments() {
-  if ($('.repository.view.issue .comments').length === 0) return;
+  if ($('.repository.view.issue .timeline').length === 0) return;
+
+  $('.re-request-review').on('click', function (event) {
+    const url = $(this).data('update-url');
+    const issueId = $(this).data('issue-id');
+    const id = $(this).data('id');
+    const isChecked = $(this).data('is-checked');
 
-  $('.re-request-review').click((event) => {
-    const $this = $('.re-request-review');
     event.preventDefault();
     updateIssuesMeta(
-      $this.data('update-url'),
+      url,
       '',
-      $this.data('issue-id'),
-      $this.data('id'),
-      $this.data('is-checked')
+      issueId,
+      id,
+      isChecked
     ).then(reload);
   });