@@ -16,6 +16,7 @@ import (
1616 access_model "code.gitea.io/gitea/models/perm/access"
1717 "code.gitea.io/gitea/models/unit"
1818 user_model "code.gitea.io/gitea/models/user"
19+ "code.gitea.io/gitea/modules/optional"
1920 "code.gitea.io/gitea/modules/structs"
2021 "code.gitea.io/gitea/modules/timeutil"
2122 "code.gitea.io/gitea/modules/util"
@@ -392,6 +393,7 @@ func GetCurrentReview(ctx context.Context, reviewer *user_model.User, issue *Iss
392393 Types : []ReviewType {ReviewTypePending },
393394 IssueID : issue .ID ,
394395 ReviewerID : reviewer .ID ,
396+ Dismissed : optional .Some (true ),
395397 })
396398 if err != nil {
397399 return nil , err
@@ -534,12 +536,18 @@ func SubmitReview(ctx context.Context, doer *user_model.User, issue *Issue, revi
534536}
535537
536538// GetReviewByIssueIDAndUserID get the latest review of reviewer for a pull request
537- func GetReviewByIssueIDAndUserID (ctx context.Context , issueID , userID int64 ) (* Review , error ) {
539+ func GetReviewByIssueIDAndUserID (ctx context.Context , issueID , userID int64 , dismissed ... bool ) (* Review , error ) {
538540 review := new (Review )
539541
540- has , err := db .GetEngine (ctx ).Where (
541- builder .In ("type" , ReviewTypeApprove , ReviewTypeReject , ReviewTypeRequest ).
542- And (builder.Eq {"issue_id" : issueID , "reviewer_id" : userID , "original_author_id" : 0 })).
542+ cond := builder .In ("type" , ReviewTypeApprove , ReviewTypeReject , ReviewTypeRequest ).
543+ And (builder.Eq {"issue_id" : issueID , "reviewer_id" : userID , "original_author_id" : 0 })
544+
545+ // apply optional filter for dismissed
546+ if len (dismissed ) != 0 {
547+ cond = cond .And (builder.Eq {"dismissed" : dismissed [0 ]})
548+ }
549+
550+ has , err := db .GetEngine (ctx ).Where (cond ).
543551 Desc ("id" ).
544552 Get (review )
545553 if err != nil {
@@ -731,7 +739,7 @@ func RemoveReviewRequest(ctx context.Context, issue *Issue, reviewer, doer *user
731739 }
732740 defer committer .Close ()
733741
734- review , err := GetReviewByIssueIDAndUserID (ctx , issue .ID , reviewer .ID )
742+ review , err := GetReviewByIssueIDAndUserID (ctx , issue .ID , reviewer .ID , false )
735743 if err != nil && ! IsErrReviewNotExist (err ) {
736744 return nil , err
737745 }
0 commit comments