Seperated global and followed activity feed
This commit is contained in:
@ -9,11 +9,33 @@ import (
|
||||
|
||||
const maxActivitiesPerPage = 40
|
||||
|
||||
// Get activity page.
|
||||
func Get(ctx *aero.Context) string {
|
||||
// Global activity page.
|
||||
func Global(ctx *aero.Context) string {
|
||||
user := utils.GetUser(ctx)
|
||||
activities := fetchActivities(user, false)
|
||||
return ctx.HTML(components.ActivityFeed(activities, user))
|
||||
}
|
||||
|
||||
// Followed activity page.
|
||||
func Followed(ctx *aero.Context) string {
|
||||
user := utils.GetUser(ctx)
|
||||
activities := fetchActivities(user, true)
|
||||
return ctx.HTML(components.ActivityFeed(activities, user))
|
||||
}
|
||||
|
||||
// fetchActivities filters the activities by the given filters.
|
||||
func fetchActivities(user *arn.User, followedOnly bool) []arn.Activity {
|
||||
var followedUserIDs []string
|
||||
|
||||
if followedOnly && user != nil {
|
||||
followedUserIDs = user.Follows().Items
|
||||
}
|
||||
|
||||
activities := arn.FilterActivities(func(activity arn.Activity) bool {
|
||||
if followedOnly && !arn.Contains(followedUserIDs, activity.GetCreatedBy()) {
|
||||
return false
|
||||
}
|
||||
|
||||
if activity.Type() == "ActivityCreate" {
|
||||
obj := activity.(*arn.ActivityCreate).Object()
|
||||
|
||||
@ -21,8 +43,8 @@ func Get(ctx *aero.Context) string {
|
||||
return false
|
||||
}
|
||||
|
||||
draft, isDraftable := obj.(arn.HasDraft)
|
||||
return !isDraftable || !draft.IsDraft
|
||||
draft, isDraftable := obj.(arn.Draftable)
|
||||
return !isDraftable || !draft.GetIsDraft()
|
||||
}
|
||||
|
||||
if activity.Type() == "ActivityConsumeAnime" {
|
||||
@ -38,5 +60,5 @@ func Get(ctx *aero.Context) string {
|
||||
activities = activities[:maxActivitiesPerPage]
|
||||
}
|
||||
|
||||
return ctx.HTML(components.ActivityFeed(activities, user))
|
||||
return activities
|
||||
}
|
||||
|
Reference in New Issue
Block a user