+async function sendUndoLikeToOrigin (byActor: ActorModel, video: VideoModel, t: Transaction) {
+ const likeUrl = getVideoLikeActivityPubUrl(byActor, video)
+ const undoUrl = getUndoActivityPubUrl(likeUrl)
+
+ const actorsInvolvedInVideo = await getActorsInvolvedInVideo(video, t)
+ const audience = getOriginVideoAudience(video, actorsInvolvedInVideo)
+ const object = await likeActivityData(likeUrl, byActor, video, t)
+ const data = await undoActivityData(undoUrl, byActor, object, t, audience)
+
+ return unicastTo(data, byActor, video.VideoChannel.Account.Actor.sharedInboxUrl, t)
+}
+
+async function sendUndoLikeToVideoFollowers (byActor: ActorModel, video: VideoModel, t: Transaction) {
+ const likeUrl = getVideoLikeActivityPubUrl(byActor, video)
+ const undoUrl = getUndoActivityPubUrl(likeUrl)
+
+ const toActorsFollowers = await getActorsInvolvedInVideo(video, t)
+ const audience = getObjectFollowersAudience(toActorsFollowers)
+ const object = await likeActivityData(likeUrl, byActor, video, t)
+ const data = await undoActivityData(undoUrl, byActor, object, t, audience)
+
+ const followersException = [ byActor ]
+ return broadcastToFollowers(data, byActor, toActorsFollowers, t, followersException)
+}
+
+async function sendUndoDislikeToOrigin (byActor: ActorModel, video: VideoModel, t: Transaction) {
+ const dislikeUrl = getVideoDislikeActivityPubUrl(byActor, video)
+ const undoUrl = getUndoActivityPubUrl(dislikeUrl)
+
+ const actorsInvolvedInVideo = await getActorsInvolvedInVideo(video, t)
+ const audience = getOriginVideoAudience(video, actorsInvolvedInVideo)
+ const dislikeActivity = createDislikeActivityData(byActor, video)
+ const object = await createActivityData(undoUrl, byActor, dislikeActivity, t)
+
+ const data = await undoActivityData(undoUrl, byActor, object, t, audience)
+
+ return unicastTo(data, byActor, video.VideoChannel.Account.Actor.sharedInboxUrl, t)
+}
+
+async function sendUndoDislikeToVideoFollowers (byActor: ActorModel, video: VideoModel, t: Transaction) {
+ const dislikeUrl = getVideoDislikeActivityPubUrl(byActor, video)
+ const undoUrl = getUndoActivityPubUrl(dislikeUrl)
+
+ const dislikeActivity = createDislikeActivityData(byActor, video)
+ const object = await createActivityData(undoUrl, byActor, dislikeActivity, t)
+
+ const data = await undoActivityData(undoUrl, byActor, object, t)
+
+ const toActorsFollowers = await getActorsInvolvedInVideo(video, t)
+
+ const followersException = [ byActor ]
+ return broadcastToFollowers(data, byActor, toActorsFollowers, t, followersException)
+}
+