diff --git a/internal/processing/status/create.go b/internal/processing/status/create.go index 10a5560b6..775ba78e2 100644 --- a/internal/processing/status/create.go +++ b/internal/processing/status/create.go @@ -221,9 +221,8 @@ func (p *Processor) Create( return nil, errWithCode } - if err := p.processVisibility(ctx, form, requester.Settings.Privacy, status); err != nil { - return nil, gtserror.NewErrorInternalError(err) - } + // Process the incoming created status visibility. + processVisibility(form, requester.Settings.Privacy, status) // Process policy AFTER visibility as it relies // on status.Visibility and form.Visibility being set. @@ -485,12 +484,11 @@ func (p *Processor) processThreadID(ctx context.Context, status *gtsmodel.Status return nil } -func (p *Processor) processVisibility( - ctx context.Context, +func processVisibility( form *apimodel.StatusCreateRequest, accountDefaultVis gtsmodel.Visibility, status *gtsmodel.Status, -) error { +) { switch { // Visibility set on form, use that. case form.Visibility != "": @@ -500,21 +498,19 @@ func (p *Processor) processVisibility( // this back on the form for later use. case accountDefaultVis != 0: status.Visibility = accountDefaultVis - form.Visibility = p.converter.VisToAPIVis(ctx, accountDefaultVis) + form.Visibility = typeutils.VisToAPIVis(accountDefaultVis) // What? Fall back to global default, set // this back on the form for later use. default: status.Visibility = gtsmodel.VisibilityDefault - form.Visibility = p.converter.VisToAPIVis(ctx, gtsmodel.VisibilityDefault) + form.Visibility = typeutils.VisToAPIVis(gtsmodel.VisibilityDefault) } // Set federated according to "local_only" field, // assuming federated (ie., not local-only) by default. localOnly := util.PtrOrValue(form.LocalOnly, false) status.Federated = util.Ptr(!localOnly) - - return nil } func processInteractionPolicy( diff --git a/internal/typeutils/internaltofrontend.go b/internal/typeutils/internaltofrontend.go index d23c67a72..91c9fea8a 100644 --- a/internal/typeutils/internaltofrontend.go +++ b/internal/typeutils/internaltofrontend.go @@ -139,8 +139,8 @@ func (c *Converter) AccountToAPIAccountSensitive(ctx context.Context, a *gtsmode } apiAccount.Source = &apimodel.Source{ - Privacy: c.VisToAPIVis(ctx, a.Settings.Privacy), - WebVisibility: c.VisToAPIVis(ctx, a.Settings.WebVisibility), + Privacy: VisToAPIVis(a.Settings.Privacy), + WebVisibility: VisToAPIVis(a.Settings.WebVisibility), WebLayout: a.Settings.WebLayout.String(), Sensitive: *a.Settings.Sensitive, Language: a.Settings.Language, @@ -1395,7 +1395,7 @@ func (c *Converter) baseStatusToFrontend( InReplyToID: nil, // Set below. InReplyToAccountID: nil, // Set below. Sensitive: *s.Sensitive, - Visibility: c.VisToAPIVis(ctx, s.Visibility), + Visibility: VisToAPIVis(s.Visibility), LocalOnly: s.IsLocalOnly(), Language: nil, // Set below. URI: s.URI, @@ -1654,7 +1654,7 @@ func (c *Converter) StatusToAPIEdits(ctx context.Context, status *gtsmodel.Statu } // VisToAPIVis converts a gts visibility into its api equivalent -func (c *Converter) VisToAPIVis(ctx context.Context, m gtsmodel.Visibility) apimodel.Visibility { +func VisToAPIVis(m gtsmodel.Visibility) apimodel.Visibility { switch m { case gtsmodel.VisibilityPublic: return apimodel.VisibilityPublic @@ -1664,6 +1664,8 @@ func (c *Converter) VisToAPIVis(ctx context.Context, m gtsmodel.Visibility) apim return apimodel.VisibilityPrivate case gtsmodel.VisibilityDirect: return apimodel.VisibilityDirect + case gtsmodel.VisibilityNone: + return apimodel.VisibilityNone } return "" }