1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- package inbox
- import (
- "fmt"
- "github.com/go-fed/activity/streams/vocab"
- "github.com/owncast/owncast/activitypub/resolvers"
- "github.com/owncast/owncast/core/chat"
- "github.com/owncast/owncast/core/chat/events"
- "github.com/owncast/owncast/core/data"
- )
- func handleEngagementActivity(eventType events.EventType, isLiveNotification bool, actorReference vocab.ActivityStreamsActorProperty, action string) error {
- // Do nothing if displaying engagement actions has been turned off.
- if !data.GetFederationShowEngagement() {
- return nil
- }
- // Do nothing if chat is disabled
- if data.GetChatDisabled() {
- return nil
- }
- // Get actor of the action
- actor, _ := resolvers.GetResolvedActorFromActorProperty(actorReference)
- // Send chat message
- actorName := actor.Name
- if actorName == "" {
- actorName = actor.Username
- }
- actorIRI := actorReference.Begin().GetIRI().String()
- userPrefix := fmt.Sprintf("%s ", actorName)
- var suffix string
- if isLiveNotification && action == events.FediverseEngagementLike {
- suffix = "liked that this stream went live."
- } else if action == events.FediverseEngagementLike {
- suffix = fmt.Sprintf("liked a post from %s.", data.GetServerName())
- } else if isLiveNotification && action == events.FediverseEngagementRepost {
- suffix = "shared this stream with their followers."
- } else if action == events.FediverseEngagementRepost {
- suffix = fmt.Sprintf("shared a post from %s.", data.GetServerName())
- } else if action == events.FediverseEngagementFollow {
- suffix = "followed this stream."
- } else {
- return fmt.Errorf("could not handle event for sending to chat: %s", action)
- }
- body := fmt.Sprintf("%s %s", userPrefix, suffix)
- var image *string
- if actor.Image != nil {
- s := actor.Image.String()
- image = &s
- }
- if err := chat.SendFediverseAction(eventType, actor.FullUsername, image, body, actorIRI); err != nil {
- return err
- }
- return nil
- }
|