Send out undo follow activity in UnfollowUser

This commit is contained in:
Anthony Wang 2022-11-12 05:13:07 +00:00
parent f75ab80b5c
commit ca502244a0
No known key found for this signature in database
GPG Key ID: 42A5B952E6DD8D38
1 changed files with 22 additions and 0 deletions

View File

@ -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)
}