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>
This commit is contained in:
Norwin 2021-09-30 06:17:39 +02:00 committed by GitHub
parent ac10c4ecc2
commit 3bbdce2601
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 27 additions and 9 deletions

View File

@ -31,10 +31,12 @@ func ToNotificationThread(n *models.Notification) *api.NotificationThread {
if n.Issue != nil { if n.Issue != nil {
result.Subject.Title = n.Issue.Title result.Subject.Title = n.Issue.Title
result.Subject.URL = n.Issue.APIURL() result.Subject.URL = n.Issue.APIURL()
result.Subject.HTMLURL = n.Issue.HTMLURL()
result.Subject.State = n.Issue.State() result.Subject.State = n.Issue.State()
comment, err := n.Issue.GetLastComment() comment, err := n.Issue.GetLastComment()
if err == nil && comment != nil { if err == nil && comment != nil {
result.Subject.LatestCommentURL = comment.APIURL() result.Subject.LatestCommentURL = comment.APIURL()
result.Subject.LatestCommentHTMLURL = comment.HTMLURL()
} }
} }
case models.NotificationSourcePullRequest: case models.NotificationSourcePullRequest:
@ -42,10 +44,12 @@ func ToNotificationThread(n *models.Notification) *api.NotificationThread {
if n.Issue != nil { if n.Issue != nil {
result.Subject.Title = n.Issue.Title result.Subject.Title = n.Issue.Title
result.Subject.URL = n.Issue.APIURL() result.Subject.URL = n.Issue.APIURL()
result.Subject.HTMLURL = n.Issue.HTMLURL()
result.Subject.State = n.Issue.State() result.Subject.State = n.Issue.State()
comment, err := n.Issue.GetLastComment() comment, err := n.Issue.GetLastComment()
if err == nil && comment != nil { if err == nil && comment != nil {
result.Subject.LatestCommentURL = comment.APIURL() result.Subject.LatestCommentURL = comment.APIURL()
result.Subject.LatestCommentHTMLURL = comment.HTMLURL()
} }
pr, _ := n.Issue.GetPullRequest() pr, _ := n.Issue.GetPullRequest()
@ -54,16 +58,20 @@ func ToNotificationThread(n *models.Notification) *api.NotificationThread {
} }
} }
case models.NotificationSourceCommit: case models.NotificationSourceCommit:
url := n.Repository.HTMLURL() + "/commit/" + n.CommitID
result.Subject = &api.NotificationSubject{ result.Subject = &api.NotificationSubject{
Type: api.NotifySubjectCommit, Type: api.NotifySubjectCommit,
Title: n.CommitID, Title: n.CommitID,
URL: n.Repository.HTMLURL() + "/commit/" + n.CommitID, URL: url,
HTMLURL: url,
} }
case models.NotificationSourceRepository: case models.NotificationSourceRepository:
result.Subject = &api.NotificationSubject{ result.Subject = &api.NotificationSubject{
Type: api.NotifySubjectRepository, Type: api.NotifySubjectRepository,
Title: n.Repository.FullName(), 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(),
} }
} }

View File

@ -21,11 +21,13 @@ type NotificationThread struct {
// NotificationSubject contains the notification subject (Issue/Pull/Commit) // NotificationSubject contains the notification subject (Issue/Pull/Commit)
type NotificationSubject struct { type NotificationSubject struct {
Title string `json:"title"` Title string `json:"title"`
URL string `json:"url"` URL string `json:"url"`
LatestCommentURL string `json:"latest_comment_url"` LatestCommentURL string `json:"latest_comment_url"`
Type NotifySubjectType `json:"type" binding:"In(Issue,Pull,Commit)"` HTMLURL string `json:"html_url"`
State StateType `json:"state"` 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 // NotificationCount number of unread notifications

View File

@ -15728,6 +15728,14 @@
"description": "NotificationSubject contains the notification subject (Issue/Pull/Commit)", "description": "NotificationSubject contains the notification subject (Issue/Pull/Commit)",
"type": "object", "type": "object",
"properties": { "properties": {
"html_url": {
"type": "string",
"x-go-name": "HTMLURL"
},
"latest_comment_html_url": {
"type": "string",
"x-go-name": "LatestCommentHTMLURL"
},
"latest_comment_url": { "latest_comment_url": {
"type": "string", "type": "string",
"x-go-name": "LatestCommentURL" "x-go-name": "LatestCommentURL"