summaryrefslogtreecommitdiff
path: root/internal/ap/extract.go
diff options
context:
space:
mode:
authorLibravatar tobi <tobi.smethurst@protonmail.com>2025-05-13 14:48:11 +0000
committerLibravatar kim <gruf@noreply.codeberg.org>2025-05-13 14:48:11 +0000
commitca12742a7ac0aec95fc0d7897e54a2272a68c34f (patch)
treec25b5ae66b927d1dbe61833f2c228a3b24164355 /internal/ap/extract.go
parent[chore] Update woodpecker to catch `len(fromJSON(CI_PIPELINE_FILES)) == 0` (#... (diff)
downloadgotosocial-ca12742a7ac0aec95fc0d7897e54a2272a68c34f.tar.xz
[chore] Deprecate `with_approval`, `always` (client API), `approvalRequired`, `always` (fedi API) (#4173)
This pull request deprecates `with_approval` and `always` on the client API side, and `approvalRequired` and `always` on the fedi API side, replacing them with `automatic_approval` and `manual_approval` and `automaticApproval` and `manualApproval`, respectively. Back-compat is kept with these deprecated fields, and they're still serialized to the client API and fedi APIs respectively, in addition to the new non-deprecated properties. This will stay the case until v0.21.0 when they'll be removed. For the sake of not doing a massive database migration, the fields are still named `Always` and `WithApproval` in storage. I think this is probably fine! Part of https://codeberg.org/superseriousbusiness/gotosocial/issues/4026 Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4173 Co-authored-by: tobi <tobi.smethurst@protonmail.com> Co-committed-by: tobi <tobi.smethurst@protonmail.com>
Diffstat (limited to 'internal/ap/extract.go')
-rw-r--r--internal/ap/extract.go54
1 files changed, 34 insertions, 20 deletions
diff --git a/internal/ap/extract.go b/internal/ap/extract.go
index 40578b8fc..14b7bb059 100644
--- a/internal/ap/extract.go
+++ b/internal/ap/extract.go
@@ -1173,15 +1173,7 @@ func extractCanLike(
return gtsmodel.PolicyRules{}
}
- withRules := propIter.Get()
- if withRules == nil {
- return gtsmodel.PolicyRules{}
- }
-
- return gtsmodel.PolicyRules{
- Always: extractPolicyValues(withRules.GetGoToSocialAlways(), owner),
- WithApproval: extractPolicyValues(withRules.GetGoToSocialApprovalRequired(), owner),
- }
+ return extractPolicyRules(propIter.Get(), owner)
}
func extractCanReply(
@@ -1197,15 +1189,7 @@ func extractCanReply(
return gtsmodel.PolicyRules{}
}
- withRules := propIter.Get()
- if withRules == nil {
- return gtsmodel.PolicyRules{}
- }
-
- return gtsmodel.PolicyRules{
- Always: extractPolicyValues(withRules.GetGoToSocialAlways(), owner),
- WithApproval: extractPolicyValues(withRules.GetGoToSocialApprovalRequired(), owner),
- }
+ return extractPolicyRules(propIter.Get(), owner)
}
func extractCanAnnounce(
@@ -1226,9 +1210,39 @@ func extractCanAnnounce(
return gtsmodel.PolicyRules{}
}
+ return extractPolicyRules(propIter.Get(), owner)
+}
+
+func extractPolicyRules(
+ withRules WithPolicyRules,
+ owner *gtsmodel.Account,
+) gtsmodel.PolicyRules {
+ if withRules == nil {
+ return gtsmodel.PolicyRules{}
+ }
+
+ // Check for `automaticApproval` and
+ // `manualApproval` properties first.
+ var (
+ automaticApproval = withRules.GetGoToSocialAutomaticApproval()
+ manualApproval = withRules.GetGoToSocialManualApproval()
+ )
+ if (automaticApproval != nil && automaticApproval.Len() != 0) ||
+ (manualApproval != nil && manualApproval.Len() != 0) {
+ // At least one is set, use these props.
+ return gtsmodel.PolicyRules{
+ AutomaticApproval: extractPolicyValues(automaticApproval, owner),
+ ManualApproval: extractPolicyValues(manualApproval, owner),
+ }
+ }
+
+ // Fall back to deprecated `always`
+ // and `withApproval` properties.
+ //
+ // TODO: Remove this in GtS v0.21.0.
return gtsmodel.PolicyRules{
- Always: extractPolicyValues(withRules.GetGoToSocialAlways(), owner),
- WithApproval: extractPolicyValues(withRules.GetGoToSocialApprovalRequired(), owner),
+ AutomaticApproval: extractPolicyValues(withRules.GetGoToSocialAlways(), owner),
+ ManualApproval: extractPolicyValues(withRules.GetGoToSocialApprovalRequired(), owner),
}
}