mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09:00 
			
		
		
		
	move notification APIFormat (#13783)
This commit is contained in:
		
							
								
								
									
										69
									
								
								modules/convert/notification.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								modules/convert/notification.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,69 @@ | ||||
| // Copyright 2020 The Gitea Authors. All rights reserved. | ||||
| // Use of this source code is governed by a MIT-style | ||||
| // license that can be found in the LICENSE file. | ||||
|  | ||||
| package convert | ||||
|  | ||||
| import ( | ||||
| 	"code.gitea.io/gitea/models" | ||||
| 	api "code.gitea.io/gitea/modules/structs" | ||||
| ) | ||||
|  | ||||
| // ToNotificationThread convert a Notification to api.NotificationThread | ||||
| func ToNotificationThread(n *models.Notification) *api.NotificationThread { | ||||
| 	result := &api.NotificationThread{ | ||||
| 		ID:        n.ID, | ||||
| 		Unread:    !(n.Status == models.NotificationStatusRead || n.Status == models.NotificationStatusPinned), | ||||
| 		Pinned:    n.Status == models.NotificationStatusPinned, | ||||
| 		UpdatedAt: n.UpdatedUnix.AsTime(), | ||||
| 		URL:       n.APIURL(), | ||||
| 	} | ||||
|  | ||||
| 	//since user only get notifications when he has access to use minimal access mode | ||||
| 	if n.Repository != nil { | ||||
| 		result.Repository = n.Repository.APIFormat(models.AccessModeRead) | ||||
| 	} | ||||
|  | ||||
| 	//handle Subject | ||||
| 	switch n.Source { | ||||
| 	case models.NotificationSourceIssue: | ||||
| 		result.Subject = &api.NotificationSubject{Type: "Issue"} | ||||
| 		if n.Issue != nil { | ||||
| 			result.Subject.Title = n.Issue.Title | ||||
| 			result.Subject.URL = n.Issue.APIURL() | ||||
| 			result.Subject.State = n.Issue.State() | ||||
| 			comment, err := n.Issue.GetLastComment() | ||||
| 			if err == nil && comment != nil { | ||||
| 				result.Subject.LatestCommentURL = comment.APIURL() | ||||
| 			} | ||||
| 		} | ||||
| 	case models.NotificationSourcePullRequest: | ||||
| 		result.Subject = &api.NotificationSubject{Type: "Pull"} | ||||
| 		if n.Issue != nil { | ||||
| 			result.Subject.Title = n.Issue.Title | ||||
| 			result.Subject.URL = n.Issue.APIURL() | ||||
| 			result.Subject.State = n.Issue.State() | ||||
| 			comment, err := n.Issue.GetLastComment() | ||||
| 			if err == nil && comment != nil { | ||||
| 				result.Subject.LatestCommentURL = comment.APIURL() | ||||
| 			} | ||||
| 		} | ||||
| 	case models.NotificationSourceCommit: | ||||
| 		result.Subject = &api.NotificationSubject{ | ||||
| 			Type:  "Commit", | ||||
| 			Title: n.CommitID, | ||||
| 		} | ||||
| 		//unused until now | ||||
| 	} | ||||
|  | ||||
| 	return result | ||||
| } | ||||
|  | ||||
| // ToNotifications convert list of Notification to api.NotificationThread list | ||||
| func ToNotifications(nl models.NotificationList) []*api.NotificationThread { | ||||
| 	var result = make([]*api.NotificationThread, 0, len(nl)) | ||||
| 	for _, n := range nl { | ||||
| 		result = append(result, ToNotificationThread(n)) | ||||
| 	} | ||||
| 	return result | ||||
| } | ||||
		Reference in New Issue
	
	Block a user