diff options
author | FChannel <> | 2022-06-14 12:57:56 -0700 |
---|---|---|
committer | FChannel <> | 2022-06-19 12:53:29 -0700 |
commit | 27d0796d7f775034f391ba8aaca99f2a81018842 (patch) | |
tree | a1b9f6efe413675d06423b0139f30c969adb6864 /activitypub | |
parent | cb9a6cf7fcf379202f2ccfc4776daf4dd1d35b9d (diff) |
send to correct actors incase not following directly
Diffstat (limited to 'activitypub')
-rw-r--r-- | activitypub/activity.go | 12 | ||||
-rw-r--r-- | activitypub/actor.go | 2 | ||||
-rw-r--r-- | activitypub/object.go | 33 |
3 files changed, 45 insertions, 2 deletions
diff --git a/activitypub/activity.go b/activitypub/activity.go index 5d89272..71f2d5c 100644 --- a/activitypub/activity.go +++ b/activitypub/activity.go @@ -44,8 +44,20 @@ func (activity Activity) AddFollowersTo() (Activity, error) { return activity, util.MakeError(err, "AddFollowersTo") } + // get followers of activity actor for _, k := range aFollowers.Items { activity.To = append(activity.To, k.Id) + reqActivity := Activity{Id: k.Id + "/followers"} + + bFollowers, err := reqActivity.GetCollection() + if err != nil { + return activity, util.MakeError(err, "AddFollowersTo") + } + + // get followers of activity actor followers + for _, j := range bFollowers.Items { + activity.To = append(activity.To, j.Id) + } } } diff --git a/activitypub/actor.go b/activitypub/actor.go index b69c831..afd9efd 100644 --- a/activitypub/actor.go +++ b/activitypub/actor.go @@ -143,7 +143,7 @@ func (actor Actor) AutoFollow() error { } func (actor Actor) DeleteCache() error { - query := `select id from cacheactivitystream where id in (select id from cacheactivitystream where actor=$1)` + query := `select id from cacheactivitystream where id in (select id from cacheactivitystream where actor=$1 and id in (select id from replies where inreplyto='')) ` rows, err := config.DB.Query(query, actor.Id) if err != nil { diff --git a/activitypub/object.go b/activitypub/object.go index 74fc136..5eb8e67 100644 --- a/activitypub/object.go +++ b/activitypub/object.go @@ -14,6 +14,37 @@ import ( "github.com/FChannel0/FChannel-Server/util" ) +func (obj ObjectBase) WantToCache(actor Actor) (bool, error) { + reqActivity := Activity{Id: obj.Actor + "/followers"} + objFollowers, err := reqActivity.GetCollection() + + if err != nil { + return false, util.MakeError(err, "WantToCache") + } + + actorFollowing, err := actor.GetFollowing() + + if err != nil { + return false, util.MakeError(err, "WantToCache") + } + + isOP, _ := obj.CheckIfOP() + + for _, e := range objFollowers.Items { + if e.Id == actor.Id { + return true, nil + } + + for _, k := range actorFollowing { + if e.Id == k.Id && !isOP && obj.InReplyTo[0].Id != "" { + return true, nil + } + } + } + + return false, nil +} + func (obj ObjectBase) CreateActivity(activityType string) (Activity, error) { var newActivity Activity @@ -1202,7 +1233,7 @@ func (obj NestedObjectBase) WritePreviewCache() error { func (obj ObjectBase) WriteReply() error { for i, e := range obj.InReplyTo { - if isOP, err := obj.CheckIfOP(); err == nil && !isOP && i == 0 { + if isOP, err := obj.CheckIfOP(); !isOP && i == 0 { var nObj ObjectBase nObj.Id = e.Id |