From c8a780e12a8112a4d4cbe8ed72d241a382f73903 Mon Sep 17 00:00:00 2001 From: tobi <31960611+tsmethurst@users.noreply.github.com> Date: Fri, 11 Apr 2025 16:36:40 +0200 Subject: [bugfix] Fix setting bot on/off (#3986) * [bugfix] Fix setting bot on/off * read client messages in tests * test fix --- internal/typeutils/internaltoas.go | 43 ++++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 18 deletions(-) (limited to 'internal/typeutils/internaltoas.go') diff --git a/internal/typeutils/internaltoas.go b/internal/typeutils/internaltoas.go index 4e6c6da77..9d9a7e289 100644 --- a/internal/typeutils/internaltoas.go +++ b/internal/typeutils/internaltoas.go @@ -39,20 +39,32 @@ import ( "github.com/superseriousbusiness/gotosocial/internal/util/xslices" ) -// AccountToAS converts a gts model account -// into an activity streams person or service. +func accountableForActorType(actorType gtsmodel.AccountActorType) ap.Accountable { + switch actorType { + case gtsmodel.AccountActorTypeApplication: + return streams.NewActivityStreamsApplication() + case gtsmodel.AccountActorTypeGroup: + return streams.NewActivityStreamsGroup() + case gtsmodel.AccountActorTypeOrganization: + return streams.NewActivityStreamsOrganization() + case gtsmodel.AccountActorTypePerson: + return streams.NewActivityStreamsPerson() + case gtsmodel.AccountActorTypeService: + return streams.NewActivityStreamsService() + default: + panic("invalid actor type") + } +} + +// AccountToAS converts a gts model +// account into an accountable. func (c *Converter) AccountToAS( ctx context.Context, a *gtsmodel.Account, ) (ap.Accountable, error) { - // accountable is a service if this - // is a bot account, otherwise a person. - var accountable ap.Accountable - if a.ActorType.IsBot() { - accountable = streams.NewActivityStreamsService() - } else { - accountable = streams.NewActivityStreamsPerson() - } + // Use appropriate underlying + // actor type of accountable. + accountable := accountableForActorType(a.ActorType) // id should be the activitypub URI of this user // something like https://example.org/users/example_user @@ -389,14 +401,9 @@ func (c *Converter) AccountToASMinimal( ctx context.Context, a *gtsmodel.Account, ) (ap.Accountable, error) { - // accountable is a service if this - // is a bot account, otherwise a person. - var accountable ap.Accountable - if a.ActorType.IsBot() { - accountable = streams.NewActivityStreamsService() - } else { - accountable = streams.NewActivityStreamsPerson() - } + // Use appropriate underlying + // actor type of accountable. + accountable := accountableForActorType(a.ActorType) // id should be the activitypub URI of this user // something like https://example.org/users/example_user -- cgit v1.2.3