Платформа ЦРНП "Мирокод" для разработки проектов
https://git.mirocod.ru
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.9 KiB
67 lines
1.9 KiB
// 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 notify |
|
|
|
import ( |
|
"net/http" |
|
"strings" |
|
|
|
"code.gitea.io/gitea/models" |
|
"code.gitea.io/gitea/modules/context" |
|
api "code.gitea.io/gitea/modules/structs" |
|
"code.gitea.io/gitea/routers/api/v1/utils" |
|
) |
|
|
|
// NewAvailable check if unread notifications exist |
|
func NewAvailable(ctx *context.APIContext) { |
|
// swagger:operation GET /notifications/new notification notifyNewAvailable |
|
// --- |
|
// summary: Check if unread notifications exist |
|
// responses: |
|
// "200": |
|
// "$ref": "#/responses/NotificationCount" |
|
ctx.JSON(http.StatusOK, api.NotificationCount{New: models.CountUnread(ctx.User)}) |
|
} |
|
|
|
func getFindNotificationOptions(ctx *context.APIContext) *models.FindNotificationOptions { |
|
before, since, err := utils.GetQueryBeforeSince(ctx) |
|
if err != nil { |
|
ctx.Error(http.StatusUnprocessableEntity, "GetQueryBeforeSince", err) |
|
return nil |
|
} |
|
opts := &models.FindNotificationOptions{ |
|
ListOptions: utils.GetListOptions(ctx), |
|
UserID: ctx.User.ID, |
|
UpdatedBeforeUnix: before, |
|
UpdatedAfterUnix: since, |
|
} |
|
if !ctx.FormBool("all") { |
|
statuses := ctx.FormStrings("status-types") |
|
opts.Status = statusStringsToNotificationStatuses(statuses, []string{"unread", "pinned"}) |
|
} |
|
|
|
subjectTypes := ctx.FormStrings("subject-type") |
|
if len(subjectTypes) != 0 { |
|
opts.Source = subjectToSource(subjectTypes) |
|
} |
|
|
|
return opts |
|
} |
|
|
|
func subjectToSource(value []string) (result []models.NotificationSource) { |
|
for _, v := range value { |
|
switch strings.ToLower(v) { |
|
case "issue": |
|
result = append(result, models.NotificationSourceIssue) |
|
case "pull": |
|
result = append(result, models.NotificationSourcePullRequest) |
|
case "commit": |
|
result = append(result, models.NotificationSourceCommit) |
|
case "repository": |
|
result = append(result, models.NotificationSourceRepository) |
|
} |
|
} |
|
return |
|
}
|
|
|