diff options
| author | 2025-03-24 11:56:42 +0100 | |
|---|---|---|
| committer | 2025-03-24 10:56:42 +0000 | |
| commit | 27171a78ded38a7142aecfcaa75ede86f73b7a5b (patch) | |
| tree | 6468899981ba4f6fd78cd95544ed1ded34120437 /internal/typeutils/internaltoas.go | |
| parent | [chore]: Bump github.com/golang-jwt/jwt/v5 from 5.2.1 to 5.2.2 (#3927) (diff) | |
| download | gotosocial-27171a78ded38a7142aecfcaa75ede86f73b7a5b.tar.xz | |
[feature] Parse funkwhale `Album` as Statusable to allow barebones interacting with bandwagon (#3931)
* bump activity version
* parse funkwhale / bandwagon album as statusable
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 |
