package groups import ( "net/http" "sort" "github.com/aerogo/aero" "github.com/animenotifier/arn" "github.com/animenotifier/notify.moe/components" "github.com/animenotifier/notify.moe/utils" ) const groupsPerPage = 12 // Get ... func Get(ctx *aero.Context) string { user := utils.GetUser(ctx) groups, err := arn.FilterGroups(func(group *arn.Group) bool { return !group.IsDraft }) sort.Slice(groups, func(i, j int) bool { if len(groups[i].Members) == len(groups[j].Members) { return groups[i].Created > groups[j].Created } return len(groups[i].Members) > len(groups[j].Members) }) if len(groups) > groupsPerPage { groups = groups[:groupsPerPage] } if err != nil { return ctx.Error(http.StatusInternalServerError, "Error fetching groups", err) } return ctx.HTML(components.Groups(groups, groupsPerPage, user)) }