mirror of
https://github.com/superseriousbusiness/gotosocial
synced 2025-06-05 21:59:39 +02:00
ensure 'none' gets included in serializable visibilities (#4007)
This commit is contained in:
@@ -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(
|
||||
|
@@ -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 ""
|
||||
}
|
||||
|
Reference in New Issue
Block a user