summaryrefslogtreecommitdiff
path: root/internal/typeutils/internaltoas.go
diff options
context:
space:
mode:
authorLibravatar tobi <31960611+tsmethurst@users.noreply.github.com>2025-03-24 11:56:42 +0100
committerLibravatar GitHub <noreply@github.com>2025-03-24 10:56:42 +0000
commit27171a78ded38a7142aecfcaa75ede86f73b7a5b (patch)
tree6468899981ba4f6fd78cd95544ed1ded34120437 /internal/typeutils/internaltoas.go
parent[chore]: Bump github.com/golang-jwt/jwt/v5 from 5.2.1 to 5.2.2 (#3927) (diff)
downloadgotosocial-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.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