summaryrefslogtreecommitdiff
path: root/internal/typeutils/internaltoas.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/typeutils/internaltoas.go')
-rw-r--r--internal/typeutils/internaltoas.go55
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