Improved user lists

This commit is contained in:
2017-11-30 16:40:52 +01:00
parent 4f4a6e7f13
commit 5284698e73
9 changed files with 187 additions and 16 deletions

View File

@ -6,6 +6,7 @@ import (
"github.com/aerogo/aero"
"github.com/animenotifier/arn"
"github.com/animenotifier/notify.moe/components"
"github.com/animenotifier/notify.moe/utils"
)
// Active ...
@ -21,6 +22,14 @@ func Active(ctx *aero.Context) string {
}
sort.Slice(users, func(i, j int) bool {
if users[i].HasAvatar() != users[j].HasAvatar() {
if users[i].HasAvatar() {
return true
}
return false
}
followersA := followCount[users[i]]
followersB := followCount[users[j]]
@ -31,7 +40,39 @@ func Active(ctx *aero.Context) string {
return followersA > followersB
})
// arn.SortUsersLastSeen(users)
return ctx.HTML(components.Users(users))
}
// ActiveNoAvatar ...
func ActiveNoAvatar(ctx *aero.Context) string {
users := arn.FilterUsers(func(user *arn.User) bool {
return user.IsActive() && !user.HasAvatar()
})
followCount := map[*arn.User]int{}
for _, user := range users {
followCount[user] = user.FollowersCount()
}
sort.Slice(users, func(i, j int) bool {
if users[i].HasAvatar() != users[j].HasAvatar() {
if users[i].HasAvatar() {
return true
}
return false
}
followersA := followCount[users[i]]
followersB := followCount[users[j]]
if followersA == followersB {
return users[i].Nick < users[j].Nick
}
return followersA > followersB
})
return ctx.HTML(components.Users(users))
}
@ -54,23 +95,74 @@ func Osu(ctx *aero.Context) string {
return ctx.HTML(components.OsuRankingList(users))
}
// Overwatch ...
func Overwatch(ctx *aero.Context) string {
users := arn.FilterUsers(func(user *arn.User) bool {
return user.IsActive() && user.HasAvatar() && user.Accounts.Overwatch.SkillRating > 0
})
// Sort by Skill Ratings
sort.Slice(users, func(i, j int) bool {
return users[i].Accounts.Overwatch.SkillRating > users[j].Accounts.Overwatch.SkillRating
})
if len(users) > 50 {
users = users[:50]
}
return ctx.HTML(components.OverwatchRankingList(users))
}
// Staff ...
func Staff(ctx *aero.Context) string {
users := arn.FilterUsers(func(user *arn.User) bool {
return user.IsActive() && user.HasAvatar() && user.Role != ""
})
// Make order deterministic
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 users[i].Nick < users[j].Nick
})
return ctx.HTML(components.Users(users))
admins := &utils.UserList{
Name: "Developer",
Users: []*arn.User{},
}
contributors := &utils.UserList{
Name: "Contributors",
Users: []*arn.User{},
}
// contributors.Users = append(contributors.Users, )
editors := &utils.UserList{
Name: "Editors",
Users: []*arn.User{},
}
for _, user := range users {
if user.Role == "admin" {
admins.Users = append(admins.Users, user)
continue
}
if user.ID == "VJOK1ckvx" || user.ID == "SUQOAFFkR" {
contributors.Users = append(contributors.Users, user)
continue
}
if user.Role == "editor" {
editors.Users = append(editors.Users, user)
continue
}
}
userLists := []*utils.UserList{
admins,
contributors,
editors,
}
return ctx.HTML(components.UserLists(userLists))
}