aboutsummaryrefslogtreecommitdiff
path: root/activitypub
diff options
context:
space:
mode:
Diffstat (limited to 'activitypub')
-rw-r--r--activitypub/activity.go12
-rw-r--r--activitypub/actor.go2
-rw-r--r--activitypub/object.go33
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