From ca502244a0ed2eb602249321df18fa3015f9bdff Mon Sep 17 00:00:00 2001 From: Anthony Wang Date: Sat, 12 Nov 2022 05:13:07 +0000 Subject: [PATCH] Send out undo follow activity in UnfollowUser --- services/user/activitypub.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/services/user/activitypub.go b/services/user/activitypub.go index 4cf664a4c3..b191db8ab9 100644 --- a/services/user/activitypub.go +++ b/services/user/activitypub.go @@ -54,6 +54,28 @@ func UnfollowUser(userID, followID int64) (err error) { return nil } + followUser, err := user_model.GetUserByID(followID) + if err != nil { + return err + } + if followUser.LoginType == auth.Federated { + // Unfollowing remote user + actorUser, err := user_model.GetUserByID(userID) + if err != nil { + return err + } + + object := ap.PersonNew(ap.IRI(followUser.LoginName)) + follow := ap.FollowNew("", object) + follow.Actor = ap.PersonNew(ap.IRI(setting.AppURL + "api/v1/activitypub/user/" + actorUser.Name)) + follow.To = ap.ItemCollection{ap.Item(ap.IRI(followUser.LoginName + "/inbox"))} + unfollow := ap.UndoNew("", follow) + err = activitypub.Send(actorUser, unfollow) + if err != nil { + return err + } + } + return user_model.UnfollowUser(userID, followID) }