0b5d7c8a4d
* WIP * fix(test): fix ap test failing * fix: fix unkeyed fields being used * chore(tests): clean up browser tests by splitting out federation UI tests
65 lines
2.0 KiB
Go
65 lines
2.0 KiB
Go
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/persistence/configrepository"
|
|
)
|
|
|
|
func handleEngagementActivity(eventType events.EventType, isLiveNotification bool, actorReference vocab.ActivityStreamsActorProperty, action string) error {
|
|
configRepository := configrepository.Get()
|
|
|
|
// Do nothing if displaying engagement actions has been turned off.
|
|
if !configRepository.GetFederationShowEngagement() {
|
|
return nil
|
|
}
|
|
|
|
// Do nothing if chat is disabled
|
|
if configRepository.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.", configRepository.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.", configRepository.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
|
|
}
|