aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNorwin <noerw@users.noreply.github.com>2021-09-30 06:17:39 +0200
committerGitHub <noreply@github.com>2021-09-30 07:17:39 +0300
commit3bbdce26012d02d3b5082f8774ce432ad9c2990b (patch)
treeb0a25803038e034af1c232a582dd5baed80c8696
parentac10c4ecc2364bc994cc649e27b7789da04730ba (diff)
downloadgitea-3bbdce26012d02d3b5082f8774ce432ad9c2990b.tar.gz
gitea-3bbdce26012d02d3b5082f8774ce432ad9c2990b.zip
API: add html urls to notification subjects (#17178)
* API: add html urls to notification subjects * add "Repository" Co-authored-by: 6543 <6543@obermui.de> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
-rw-r--r--modules/convert/notification.go16
-rw-r--r--modules/structs/notifications.go12
-rw-r--r--templates/swagger/v1_json.tmpl8
3 files changed, 27 insertions, 9 deletions
diff --git a/modules/convert/notification.go b/modules/convert/notification.go
index b0888ee09f..fae7be1257 100644
--- a/modules/convert/notification.go
+++ b/modules/convert/notification.go
@@ -31,10 +31,12 @@ func ToNotificationThread(n *models.Notification) *api.NotificationThread {
if n.Issue != nil {
result.Subject.Title = n.Issue.Title
result.Subject.URL = n.Issue.APIURL()
+ result.Subject.HTMLURL = n.Issue.HTMLURL()
result.Subject.State = n.Issue.State()
comment, err := n.Issue.GetLastComment()
if err == nil && comment != nil {
result.Subject.LatestCommentURL = comment.APIURL()
+ result.Subject.LatestCommentHTMLURL = comment.HTMLURL()
}
}
case models.NotificationSourcePullRequest:
@@ -42,10 +44,12 @@ func ToNotificationThread(n *models.Notification) *api.NotificationThread {
if n.Issue != nil {
result.Subject.Title = n.Issue.Title
result.Subject.URL = n.Issue.APIURL()
+ result.Subject.HTMLURL = n.Issue.HTMLURL()
result.Subject.State = n.Issue.State()
comment, err := n.Issue.GetLastComment()
if err == nil && comment != nil {
result.Subject.LatestCommentURL = comment.APIURL()
+ result.Subject.LatestCommentHTMLURL = comment.HTMLURL()
}
pr, _ := n.Issue.GetPullRequest()
@@ -54,16 +58,20 @@ func ToNotificationThread(n *models.Notification) *api.NotificationThread {
}
}
case models.NotificationSourceCommit:
+ url := n.Repository.HTMLURL() + "/commit/" + n.CommitID
result.Subject = &api.NotificationSubject{
- Type: api.NotifySubjectCommit,
- Title: n.CommitID,
- URL: n.Repository.HTMLURL() + "/commit/" + n.CommitID,
+ Type: api.NotifySubjectCommit,
+ Title: n.CommitID,
+ URL: url,
+ HTMLURL: url,
}
case models.NotificationSourceRepository:
result.Subject = &api.NotificationSubject{
Type: api.NotifySubjectRepository,
Title: n.Repository.FullName(),
- URL: n.Repository.Link(),
+ // FIXME: this is a relative URL, rather useless and inconsistent, but keeping for backwards compat
+ URL: n.Repository.Link(),
+ HTMLURL: n.Repository.HTMLURL(),
}
}
diff --git a/modules/structs/notifications.go b/modules/structs/notifications.go
index 675dcf76b1..3fd9088ce3 100644
--- a/modules/structs/notifications.go
+++ b/modules/structs/notifications.go
@@ -21,11 +21,13 @@ type NotificationThread struct {
// NotificationSubject contains the notification subject (Issue/Pull/Commit)
type NotificationSubject struct {
- Title string `json:"title"`
- URL string `json:"url"`
- LatestCommentURL string `json:"latest_comment_url"`
- Type NotifySubjectType `json:"type" binding:"In(Issue,Pull,Commit)"`
- State StateType `json:"state"`
+ Title string `json:"title"`
+ URL string `json:"url"`
+ LatestCommentURL string `json:"latest_comment_url"`
+ HTMLURL string `json:"html_url"`
+ LatestCommentHTMLURL string `json:"latest_comment_html_url"`
+ Type NotifySubjectType `json:"type" binding:"In(Issue,Pull,Commit,Repository)"`
+ State StateType `json:"state"`
}
// NotificationCount number of unread notifications
diff --git a/templates/swagger/v1_json.tmpl b/templates/swagger/v1_json.tmpl
index 03d1cbda98..c6fa664af6 100644
--- a/templates/swagger/v1_json.tmpl
+++ b/templates/swagger/v1_json.tmpl
@@ -15728,6 +15728,14 @@
"description": "NotificationSubject contains the notification subject (Issue/Pull/Commit)",
"type": "object",
"properties": {
+ "html_url": {
+ "type": "string",
+ "x-go-name": "HTMLURL"
+ },
+ "latest_comment_html_url": {
+ "type": "string",
+ "x-go-name": "LatestCommentHTMLURL"
+ },
"latest_comment_url": {
"type": "string",
"x-go-name": "LatestCommentURL"