Added latest notifications API route
This commit is contained in:
parent
89adf2942e
commit
c6c7a305fe
@ -13,7 +13,6 @@ import (
|
|||||||
"github.com/animenotifier/notify.moe/pages/editor/jobs"
|
"github.com/animenotifier/notify.moe/pages/editor/jobs"
|
||||||
"github.com/animenotifier/notify.moe/pages/me"
|
"github.com/animenotifier/notify.moe/pages/me"
|
||||||
"github.com/animenotifier/notify.moe/pages/notifications"
|
"github.com/animenotifier/notify.moe/pages/notifications"
|
||||||
"github.com/animenotifier/notify.moe/pages/notifications/feed"
|
|
||||||
"github.com/animenotifier/notify.moe/pages/popular"
|
"github.com/animenotifier/notify.moe/pages/popular"
|
||||||
"github.com/animenotifier/notify.moe/pages/soundtrack"
|
"github.com/animenotifier/notify.moe/pages/soundtrack"
|
||||||
"github.com/animenotifier/notify.moe/pages/upload"
|
"github.com/animenotifier/notify.moe/pages/upload"
|
||||||
@ -34,6 +33,7 @@ func Register(l *layout.Layout, app *aero.Application) {
|
|||||||
app.Get("/api/test/notification", notifications.Test)
|
app.Get("/api/test/notification", notifications.Test)
|
||||||
app.Get("/api/count/notifications/unseen", notifications.CountUnseen)
|
app.Get("/api/count/notifications/unseen", notifications.CountUnseen)
|
||||||
app.Get("/api/mark/notifications/seen", notifications.MarkNotificationsAsSeen)
|
app.Get("/api/mark/notifications/seen", notifications.MarkNotificationsAsSeen)
|
||||||
|
app.Get("/api/user/:id/notifications/latest", notifications.Latest)
|
||||||
app.Get("/api/random/soundtrack", soundtrack.Random)
|
app.Get("/api/random/soundtrack", soundtrack.Random)
|
||||||
app.Get("/api/next/soundtrack", soundtrack.Next)
|
app.Get("/api/next/soundtrack", soundtrack.Next)
|
||||||
|
|
||||||
@ -50,9 +50,4 @@ func Register(l *layout.Layout, app *aero.Application) {
|
|||||||
|
|
||||||
// Jobs
|
// Jobs
|
||||||
app.Post("/api/job/:job/start", jobs.Start)
|
app.Post("/api/job/:job/start", jobs.Start)
|
||||||
|
|
||||||
// Feed
|
|
||||||
app.Get("/api/user/:id/notifications/feed", notificationsfeed.JSON)
|
|
||||||
app.Get("/api/user/:id/notifications/feed/atom", notificationsfeed.Atom)
|
|
||||||
app.Get("/api/user/:id/notifications/feed/rss", notificationsfeed.RSS)
|
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package notifications
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"sort"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"github.com/aerogo/aero"
|
"github.com/aerogo/aero"
|
||||||
@ -40,6 +41,29 @@ func MarkNotificationsAsSeen(ctx *aero.Context) string {
|
|||||||
return "ok"
|
return "ok"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Latest returns the latest notifications.
|
||||||
|
func Latest(ctx *aero.Context) string {
|
||||||
|
userID := ctx.Get("id")
|
||||||
|
user, err := arn.GetUser(userID)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return ctx.Error(http.StatusBadRequest, "Invalid user ID")
|
||||||
|
}
|
||||||
|
|
||||||
|
notifications := user.Notifications().Notifications()
|
||||||
|
|
||||||
|
// Sort by date
|
||||||
|
sort.Slice(notifications, func(i, j int) bool {
|
||||||
|
return notifications[i].Created > notifications[j].Created
|
||||||
|
})
|
||||||
|
|
||||||
|
if len(notifications) > maxNotifications {
|
||||||
|
notifications = notifications[:maxNotifications]
|
||||||
|
}
|
||||||
|
|
||||||
|
return ctx.JSON(notifications)
|
||||||
|
}
|
||||||
|
|
||||||
// Test sends a test notification to the logged in user.
|
// Test sends a test notification to the logged in user.
|
||||||
func Test(ctx *aero.Context) string {
|
func Test(ctx *aero.Context) string {
|
||||||
user := utils.GetUser(ctx)
|
user := utils.GetUser(ctx)
|
||||||
|
@ -1,23 +0,0 @@
|
|||||||
package notificationsfeed
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/aerogo/aero"
|
|
||||||
)
|
|
||||||
|
|
||||||
// maxNotifications indicates how many notifications are shown in the feed.
|
|
||||||
const maxNotifications = 20
|
|
||||||
|
|
||||||
// RSS returns a notifications feed in RSS format.
|
|
||||||
func RSS(ctx *aero.Context) string {
|
|
||||||
return "reserved"
|
|
||||||
}
|
|
||||||
|
|
||||||
// JSON returns a notifications feed in JSON format.
|
|
||||||
func JSON(ctx *aero.Context) string {
|
|
||||||
return "reserved"
|
|
||||||
}
|
|
||||||
|
|
||||||
// Atom returns a notifications feed in Atom format.
|
|
||||||
func Atom(ctx *aero.Context) string {
|
|
||||||
return "reserved"
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user