Nano integration improvements

This commit is contained in:
2017-10-28 03:53:12 +02:00
parent b07a98ed32
commit 76e5f37eca
14 changed files with 298 additions and 517 deletions

View File

@ -1,7 +1,7 @@
package users
import (
"net/http"
"sort"
"github.com/aerogo/aero"
"github.com/animenotifier/arn"
@ -21,11 +21,14 @@ func Active(ctx *aero.Context) string {
// Osu ...
func Osu(ctx *aero.Context) string {
users, err := arn.GetListOfUsersCached("active osu users")
users := arn.FilterUsers(func(user *arn.User) bool {
return user.IsActive() && user.HasAvatar() && user.Accounts.Osu.PP > 0
})
if err != nil {
return ctx.Error(http.StatusInternalServerError, "Could not fetch user data", err)
}
// Sort by pp
sort.Slice(users, func(i, j int) bool {
return users[i].Accounts.Osu.PP > users[j].Accounts.Osu.PP
})
if len(users) > 50 {
users = users[:50]
@ -36,22 +39,34 @@ func Osu(ctx *aero.Context) string {
// Staff ...
func Staff(ctx *aero.Context) string {
users, err := arn.GetListOfUsersCached("active staff users")
users := arn.FilterUsers(func(user *arn.User) bool {
return user.IsActive() && user.HasAvatar() && user.Role != ""
})
if err != nil {
return ctx.Error(http.StatusInternalServerError, "Could not fetch user data", err)
}
sort.Slice(users, func(i, j int) bool {
if users[i].Role == "" {
return false
}
if users[j].Role == "" {
return true
}
return users[i].Role == "admin"
})
return ctx.HTML(components.Users(users))
}
// AnimeWatching ...
func AnimeWatching(ctx *aero.Context) string {
users, err := arn.GetListOfUsersCached("active anime watching users")
users := arn.FilterUsers(func(user *arn.User) bool {
return user.IsActive() && user.HasAvatar()
})
if err != nil {
return ctx.Error(http.StatusInternalServerError, "Could not fetch user data", err)
}
sort.Slice(users, func(i, j int) bool {
return len(users[i].AnimeList().Watching().Items) > len(users[j].AnimeList().Watching().Items)
})
return ctx.HTML(components.Users(users))
}