mirror of
https://github.com/superseriousbusiness/gotosocial
synced 2025-06-05 21:59:39 +02:00
[feature] Forward-compatibility with Approval objects (#3807)
* vendor * [feature] Forward-compatibility with Approval objects * vendor the thing * fix leetle bug * lil syntax tweak for beloved kimb
This commit is contained in:
@@ -128,16 +128,13 @@ func ToPollOptionable(t vocab.Type) (PollOptionable, bool) {
|
||||
}
|
||||
|
||||
// IsAccept returns whether AS vocab type name
|
||||
// is something that can be cast to Accept.
|
||||
// is something that can be cast to Acceptable.
|
||||
func IsAcceptable(typeName string) bool {
|
||||
return typeName == ActivityAccept
|
||||
}
|
||||
|
||||
// ToAcceptable safely tries to cast vocab.Type as vocab.ActivityStreamsAccept.
|
||||
//
|
||||
// TODO: Add additional "Accept" types here, eg., "ApproveReply" from
|
||||
// https://codeberg.org/fediverse/fep/src/branch/main/fep/5624/fep-5624.md
|
||||
func ToAcceptable(t vocab.Type) (vocab.ActivityStreamsAccept, bool) {
|
||||
// ToAcceptable safely tries to cast vocab.Type as Acceptable.
|
||||
func ToAcceptable(t vocab.Type) (Acceptable, bool) {
|
||||
acceptable, ok := t.(vocab.ActivityStreamsAccept)
|
||||
if !ok || !IsAcceptable(t.GetTypeName()) {
|
||||
return nil, false
|
||||
@@ -145,6 +142,28 @@ func ToAcceptable(t vocab.Type) (vocab.ActivityStreamsAccept, bool) {
|
||||
return acceptable, true
|
||||
}
|
||||
|
||||
// IsApprovable returns whether AS vocab type name
|
||||
// is something that can be cast to Approvable.
|
||||
func IsApprovable(typeName string) bool {
|
||||
switch typeName {
|
||||
case ObjectLikeApproval,
|
||||
ObjectReplyApproval,
|
||||
ObjectAnnounceApproval:
|
||||
return true
|
||||
default:
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
// ToAcceptable safely tries to cast vocab.Type as Approvable.
|
||||
func ToApprovable(t vocab.Type) (Approvable, bool) {
|
||||
approvable, ok := t.(Approvable)
|
||||
if !ok || !IsApprovable(t.GetTypeName()) {
|
||||
return nil, false
|
||||
}
|
||||
return approvable, true
|
||||
}
|
||||
|
||||
// Activityable represents the minimum activitypub interface for representing an 'activity'.
|
||||
// (see: IsActivityable() for types implementing this, though you MUST make sure to check
|
||||
// the typeName as this bare interface may be implementable by non-Activityable types).
|
||||
@@ -247,6 +266,19 @@ type PollOptionable interface {
|
||||
// interface for representing an Accept.
|
||||
type Acceptable interface {
|
||||
Activityable
|
||||
|
||||
WithTarget
|
||||
WithResult
|
||||
}
|
||||
|
||||
// Approvable represents the minimum activitypub interface
|
||||
// for a LikeApproval, ReplyApproval, or AnnounceApproval.
|
||||
type Approvable interface {
|
||||
vocab.Type
|
||||
|
||||
WithAttributedTo
|
||||
WithObject
|
||||
WithTarget
|
||||
}
|
||||
|
||||
// Attachmentable represents the minimum activitypub interface for representing a 'mediaAttachment'. (see: IsAttachmentable).
|
||||
@@ -708,3 +740,9 @@ type WithApprovedBy interface {
|
||||
GetGoToSocialApprovedBy() vocab.GoToSocialApprovedByProperty
|
||||
SetGoToSocialApprovedBy(vocab.GoToSocialApprovedByProperty)
|
||||
}
|
||||
|
||||
// WithVotersCount represents an activity or object the result property.
|
||||
type WithResult interface {
|
||||
GetActivityStreamsResult() vocab.ActivityStreamsResultProperty
|
||||
SetActivityStreamsResult(vocab.ActivityStreamsResultProperty)
|
||||
}
|
||||
|
Reference in New Issue
Block a user