feat: Adds a webhook for when a user follows the stream (#4362)

* feat: Adds a webhook for when a user follow the stream

Frontend:
Adds a checkbox which renders only when social features are enabled.

Backend:
- Defines a new type for the event
- Implements the webhook including unit testing
- Fires the webhook inside the ApproveFollower handler

* Removes unnecessary Type fiels from Events struct

* refactor: renames SendUserFollowedEvent func to FediverseEngagementFollow and fixes linting errors

* fix: fixes unit test to reflect removed Type field from FediverseEngagementFollowEvent

* feat: fires webhook also when manual approvals are not required

* chore: slight cleanup

---------

Co-authored-by: Gabe Kangas <gabek@real-ity.com>
This commit is contained in:
fortyoneplustwo
2025-11-21 13:47:50 -08:00
committed by GitHub
co-authored by Gabe Kangas
parent 9cc58d14c3
commit 80850b15d0
9 changed files with 123 additions and 12 deletions
+4
View File
@@ -6,6 +6,7 @@ import (
"github.com/owncast/owncast/activitypub/persistence"
"github.com/owncast/owncast/activitypub/requests"
"github.com/owncast/owncast/core/webhooks"
"github.com/owncast/owncast/persistence/configrepository"
"github.com/owncast/owncast/webserver/handlers/generated"
webutils "github.com/owncast/owncast/webserver/utils"
@@ -36,6 +37,9 @@ func ApproveFollower(w http.ResponseWriter, r *http.Request) {
return
}
// Fire fediverse engagement follow event.
go webhooks.SendFediverseEngagementFollowEvent(*approval.ActorIRI)
configRepository := configrepository.Get()
localAccountName := configRepository.GetDefaultFederationUsername()