Fix Issue Unsubscription (#9634)

release/v1.15
6543 2020-01-07 16:41:35 +01:00 committed by zeripath
parent b6fa229dcf
commit 9406368633
2 changed files with 9 additions and 5 deletions

View File

@ -4,7 +4,9 @@
package models
import "code.gitea.io/gitea/modules/timeutil"
import (
"code.gitea.io/gitea/modules/timeutil"
)
// IssueWatch is connection request for receiving issue notification.
type IssueWatch struct {
@ -46,17 +48,18 @@ func CreateOrUpdateIssueWatch(userID, issueID int64, isWatching bool) error {
return nil
}
// GetIssueWatch returns an issue watch by user and issue
// GetIssueWatch returns all IssueWatch objects from db by user and issue
// the current Web-UI need iw object for watchers AND explicit non-watchers
func GetIssueWatch(userID, issueID int64) (iw *IssueWatch, exists bool, err error) {
return getIssueWatch(x, userID, issueID)
}
// Return watcher AND explicit non-watcher if entry in db exist
func getIssueWatch(e Engine, userID, issueID int64) (iw *IssueWatch, exists bool, err error) {
iw = new(IssueWatch)
exists, err = e.
Where("user_id = ?", userID).
And("issue_id = ?", issueID).
And("is_watching = ?", true).
Get(iw)
return
}

View File

@ -29,9 +29,10 @@ func TestGetIssueWatch(t *testing.T) {
assert.True(t, exists)
assert.NoError(t, err)
_, exists, err = GetIssueWatch(2, 2)
assert.False(t, exists)
iw, exists, err := GetIssueWatch(2, 2)
assert.True(t, exists)
assert.NoError(t, err)
assert.EqualValues(t, false, iw.IsWatching)
_, exists, err = GetIssueWatch(3, 1)
assert.False(t, exists)