diff --git a/internal/db/bundb/migrations/20250305205820_content_warning_fixes/interactionpolicy.go b/internal/db/bundb/migrations/20250305205820_content_warning_fixes/interactionpolicy.go index 9895acc22..fd0c60a72 100644 --- a/internal/db/bundb/migrations/20250305205820_content_warning_fixes/interactionpolicy.go +++ b/internal/db/bundb/migrations/20250305205820_content_warning_fixes/interactionpolicy.go @@ -17,83 +17,16 @@ package gtsmodel -// A policy URI is GoToSocial's internal representation of -// one ActivityPub URI for an Actor or a Collection of Actors, -// specific to the domain of enforcing interaction policies. -// -// A PolicyValue can be stored in the database either as one -// of the Value constants defined below (to save space), OR as -// a full-fledged ActivityPub URI. -// -// A PolicyValue should be translated to the canonical string -// value of the represented URI when federating an item, or -// from the canonical string value of the URI when receiving -// or retrieving an item. -// -// For example, if the PolicyValue `followers` was being -// federated outwards in an interaction policy attached to an -// item created by the actor `https://example.org/users/someone`, -// then it should be translated to their followers URI when sent, -// eg., `https://example.org/users/someone/followers`. -// -// Likewise, if GoToSocial receives an item with an interaction -// policy containing `https://example.org/users/someone/followers`, -// and the item was created by `https://example.org/users/someone`, -// then the followers URI would be converted to `followers` -// for internal storage. type PolicyValue string - -const ( - // Stand-in for ActivityPub magic public URI, - // which encompasses every possible Actor URI. - PolicyValuePublic PolicyValue = "public" - // Stand-in for the Followers Collection of - // the item owner's Actor. - PolicyValueFollowers PolicyValue = "followers" - // Stand-in for the Following Collection of - // the item owner's Actor. - PolicyValueFollowing PolicyValue = "following" - // Stand-in for the Mutuals Collection of - // the item owner's Actor. - // - // (TODO: Reserved, currently unused). - PolicyValueMutuals PolicyValue = "mutuals" - // Stand-in for Actor URIs tagged in the item. - PolicyValueMentioned PolicyValue = "mentioned" - // Stand-in for the Actor URI of the item owner. - PolicyValueAuthor PolicyValue = "author" -) - type PolicyValues []PolicyValue -// An InteractionPolicy determines which -// interactions will be accepted for an -// item, and according to what rules. type InteractionPolicy struct { - // Conditions in which a Like - // interaction will be accepted - // for an item with this policy. - CanLike PolicyRules - // Conditions in which a Reply - // interaction will be accepted - // for an item with this policy. - CanReply PolicyRules - // Conditions in which an Announce - // interaction will be accepted - // for an item with this policy. + CanLike PolicyRules + CanReply PolicyRules CanAnnounce PolicyRules } -// PolicyRules represents the rules according -// to which a certain interaction is permitted -// to various Actor and Actor Collection URIs. type PolicyRules struct { - // Always is for PolicyValues who are - // permitted to do an interaction - // without requiring approval. - Always PolicyValues - // WithApproval is for PolicyValues who - // are conditionally permitted to do - // an interaction, pending approval. + Always PolicyValues WithApproval PolicyValues }