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/object.go | |
parent | cb9a6cf7fcf379202f2ccfc4776daf4dd1d35b9d (diff) |
send to correct actors incase not following directly
Diffstat (limited to 'activitypub/object.go')
-rw-r--r-- | activitypub/object.go | 33 |
1 files changed, 32 insertions, 1 deletions
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 |