diff options
Diffstat (limited to 'internal/typeutils/internaltoas.go')
| -rw-r--r-- | internal/typeutils/internaltoas.go | 55 |
1 files changed, 29 insertions, 26 deletions
diff --git a/internal/typeutils/internaltoas.go b/internal/typeutils/internaltoas.go index c5e055638..7d420de2c 100644 --- a/internal/typeutils/internaltoas.go +++ b/internal/typeutils/internaltoas.go @@ -705,35 +705,38 @@ func (c *Converter) StatusToAS(ctx context.Context, s *gtsmodel.Status) (ap.Stat status.SetActivityStreamsSensitive(sensitiveProp) // interactionPolicy - var p *gtsmodel.InteractionPolicy - if s.InteractionPolicy != nil { - // Use InteractionPolicy - // set on the status. - p = s.InteractionPolicy - } else { - // Fall back to default policy - // for the status's visibility. - p = gtsmodel.DefaultInteractionPolicyFor(s.Visibility) - } - policy, err := c.InteractionPolicyToASInteractionPolicy(ctx, p, s) - if err != nil { - return nil, fmt.Errorf("error creating interactionPolicy: %w", err) - } - - policyProp := streams.NewGoToSocialInteractionPolicyProperty() - policyProp.AppendGoToSocialInteractionPolicy(policy) - status.SetGoToSocialInteractionPolicy(policyProp) - - // Parse + set approvedBy. - if s.ApprovedByURI != "" { - approvedBy, err := url.Parse(s.ApprovedByURI) + if ipa, ok := status.(ap.InteractionPolicyAware); ok { + var p *gtsmodel.InteractionPolicy + if s.InteractionPolicy != nil { + // Use InteractionPolicy + // set on the status. + p = s.InteractionPolicy + } else { + // Fall back to default policy + // for the status's visibility. + p = gtsmodel.DefaultInteractionPolicyFor(s.Visibility) + } + policy, err := c.InteractionPolicyToASInteractionPolicy(ctx, p, s) if err != nil { - return nil, fmt.Errorf("error parsing approvedBy: %w", err) + return nil, fmt.Errorf("error creating interactionPolicy: %w", err) } - approvedByProp := streams.NewGoToSocialApprovedByProperty() - approvedByProp.Set(approvedBy) - status.SetGoToSocialApprovedBy(approvedByProp) + // Set interaction policy. + policyProp := streams.NewGoToSocialInteractionPolicyProperty() + policyProp.AppendGoToSocialInteractionPolicy(policy) + ipa.SetGoToSocialInteractionPolicy(policyProp) + + // Parse + set approvedBy. + if s.ApprovedByURI != "" { + approvedBy, err := url.Parse(s.ApprovedByURI) + if err != nil { + return nil, fmt.Errorf("error parsing approvedBy: %w", err) + } + + approvedByProp := streams.NewGoToSocialApprovedByProperty() + approvedByProp.Set(approvedBy) + ipa.SetGoToSocialApprovedBy(approvedByProp) + } } return status, nil |
