+): ActivityUndo {
+ if (!audience) audience = getAudience(byActor)
+
+ return audiencify(
+ {
+ type: 'Undo' as 'Undo',
+ id: url,
+ actor: byActor.url,
+ object
+ },
+ audience
+ )
+}
+
+async function sendUndoVideoRelatedActivity (options: {
+ byActor: MActor
+ video: MVideoAccountLight
+ url: string
+ activity: ActivityFollow | ActivityCreate | ActivityAnnounce
+ contextType: ContextType
+ transaction: Transaction
+}) {
+ const activityBuilder = (audience: ActivityAudience) => {
+ const undoUrl = getUndoActivityPubUrl(options.url)
+
+ return undoActivityData(undoUrl, options.byActor, options.activity, audience)
+ }
+
+ return sendVideoRelatedActivity(activityBuilder, options)
+}
+
+async function sendUndoVideoRateToOriginActivity (options: {
+ byActor: MActor
+ video: MVideoAccountLight
+ url: string
+ activity: ActivityLike | ActivityDislike
+ transaction: Transaction
+}) {
+ const activityBuilder = (audience: ActivityAudience) => {
+ const undoUrl = getUndoActivityPubUrl(options.url)
+
+ return undoActivityData(undoUrl, options.byActor, options.activity, audience)