[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>
This commit is contained in:
tobi
2025-05-13 14:48:11 +00:00
committed by kim
parent 5925644ad3
commit ca12742a7a
28 changed files with 1214 additions and 248 deletions

View File

@@ -582,16 +582,16 @@ func NormalizeOutgoingContentProp(item WithContent, rawJSON map[string]interface
//
// "interactionPolicy": {
// "canAnnounce": {
// "always": "https://www.w3.org/ns/activitystreams#Public",
// "approvalRequired": []
// "automaticApproval": "https://www.w3.org/ns/activitystreams#Public",
// "manualApproval": []
// },
// "canLike": {
// "always": "https://www.w3.org/ns/activitystreams#Public",
// "approvalRequired": []
// "automaticApproval": "https://www.w3.org/ns/activitystreams#Public",
// "manualApproval": []
// },
// "canReply": {
// "always": "https://www.w3.org/ns/activitystreams#Public",
// "approvalRequired": []
// "automaticApproval": "https://www.w3.org/ns/activitystreams#Public",
// "manualApproval": []
// }
// }
//
@@ -599,22 +599,22 @@ func NormalizeOutgoingContentProp(item WithContent, rawJSON map[string]interface
//
// "interactionPolicy": {
// "canAnnounce": {
// "always": [
// "automaticApproval": [
// "https://www.w3.org/ns/activitystreams#Public"
// ],
// "approvalRequired": []
// "manualApproval": []
// },
// "canLike": {
// "always": [
// "automaticApproval": [
// "https://www.w3.org/ns/activitystreams#Public"
// ],
// "approvalRequired": []
// "manualApproval": []
// },
// "canReply": {
// "always": [
// "automaticApproval": [
// "https://www.w3.org/ns/activitystreams#Public"
// ],
// "approvalRequired": []
// "manualApproval": []
// }
// }
//
@@ -655,8 +655,10 @@ func NormalizeOutgoingInteractionPolicyProp(item WithInteractionPolicy, rawJSON
}
for _, PolicyValuesKey := range []string{
"always",
"approvalRequired",
"automaticApproval",
"manualApproval",
"always", // deprecated
"approvalRequired", // deprecated
} {
PolicyValuesVal, ok := rulesValMap[PolicyValuesKey]
if !ok {