diff --git a/pages/anime/anime.go b/pages/anime/anime.go index 9981e74a..f4939a59 100644 --- a/pages/anime/anime.go +++ b/pages/anime/anime.go @@ -40,6 +40,24 @@ func Get(ctx *aero.Context) string { } } + // Friends watching + var friends []*arn.User + + if user != nil { + friends = user.Follows().Users() + + deleted := 0 + for i := range friends { + j := i - deleted + if !friends[j].AnimeList().Contains(anime.ID) { + friends = friends[:j+copy(friends[j:], friends[j+1:])] + deleted++ + } + } + + arn.SortUsersLastSeen(friends) + } + // Open Graph description := anime.Summary @@ -70,5 +88,5 @@ func Get(ctx *aero.Context) string { ctx.Data = openGraph - return ctx.HTML(components.Anime(anime, tracks, user, episodesReversed)) + return ctx.HTML(components.Anime(anime, friends, tracks, user, episodesReversed)) } diff --git a/pages/anime/anime.pixy b/pages/anime/anime.pixy index 63f68651..fd43436e 100644 --- a/pages/anime/anime.pixy +++ b/pages/anime/anime.pixy @@ -1,4 +1,4 @@ -component Anime(anime *arn.Anime, tracks []*arn.SoundTrack, user *arn.User, episodesReversed bool) +component Anime(anime *arn.Anime, friends []*arn.User, tracks []*arn.SoundTrack, user *arn.User, episodesReversed bool) .anime-header(data-id=anime.ID) if anime.Image.Small != "" .anime-image-container @@ -35,6 +35,12 @@ component Anime(anime *arn.Anime, tracks []*arn.SoundTrack, user *arn.User, epis Icon("plus") span Add to collection + if len(friends) > 0 + h3.anime-section-name Friends + + .anime-friends + UserGrid(friends) + h3.anime-section-name Ratings .anime-rating-categories .anime-rating-category(title=toString(anime.Rating.Overall)) diff --git a/pages/anime/anime.scarlet b/pages/anime/anime.scarlet index 00de8545..5f32a9e5 100644 --- a/pages/anime/anime.scarlet +++ b/pages/anime/anime.scarlet @@ -92,6 +92,10 @@ .anime-rating-categories vertical +.anime-friends + .user-avatars + justify-content flex-start + .footer font-size 0.8rem opacity 0.7 diff --git a/pages/dashboard/dashboard.go b/pages/dashboard/dashboard.go index 825473b8..ae40dbc2 100644 --- a/pages/dashboard/dashboard.go +++ b/pages/dashboard/dashboard.go @@ -88,7 +88,7 @@ func dashboard(ctx *aero.Context) string { } followingList = userList.([]*arn.User) - followingList = arn.SortUsersLastSeen(followingList) + arn.SortUsersLastSeen(followingList) if len(followingList) > maxFollowing { followingList = followingList[:maxFollowing] diff --git a/pages/profile/followers.go b/pages/profile/followers.go index ef14813f..3155df4e 100644 --- a/pages/profile/followers.go +++ b/pages/profile/followers.go @@ -2,7 +2,6 @@ package profile import ( "net/http" - "sort" "github.com/aerogo/aero" "github.com/animenotifier/arn" @@ -20,10 +19,7 @@ func GetFollowers(ctx *aero.Context) string { } followers := viewUser.Followers() - - sort.Slice(followers, func(i, j int) bool { - return followers[i].LastSeen > followers[j].LastSeen - }) + arn.SortUsersLastSeen(followers) return ctx.HTML(components.ProfileFollowers(followers, viewUser, utils.GetUser(ctx), ctx.URI())) diff --git a/pages/profile/followers.pixy b/pages/profile/followers.pixy index 50e25b72..63a2ccbd 100644 --- a/pages/profile/followers.pixy +++ b/pages/profile/followers.pixy @@ -2,10 +2,18 @@ component ProfileFollowers(followers []*arn.User, viewUser *arn.User, user *arn. ProfileHeader(viewUser, user, uri) if len(followers) > 0 - .user-avatars - each user in followers - if user.Nick != "" + UserGrid(followers) + else + p.no-data.mountable= viewUser.Nick + " doesn't have a follower yet." + +component UserGrid(users []*arn.User) + .user-avatars + each user in users + if user.Nick != "" + if user.IsActive() .mountable Avatar(user) - else - p.no-data.mountable= viewUser.Nick + " doesn't have a follower yet." \ No newline at end of file + else + .mountable + .inactive-user + Avatar(user) \ No newline at end of file diff --git a/pages/profile/followers.scarlet b/pages/profile/followers.scarlet new file mode 100644 index 00000000..2550fa2b --- /dev/null +++ b/pages/profile/followers.scarlet @@ -0,0 +1,2 @@ +.inactive-user + opacity 0.25 \ No newline at end of file