From c3badc81fe3d78601fb278a7f28eeed63060d300 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 4 Jan 2018 16:56:36 +0100 Subject: [PATCH] Fix delete activities --- .../lib/activitypub/process/process-delete.ts | 6 +++--- server/lib/activitypub/send/send-delete.ts | 17 +++++++++++------ server/lib/activitypub/url.ts | 7 ++++++- shared/models/activitypub/activity.ts | 1 + 4 files changed, 21 insertions(+), 10 deletions(-) diff --git a/server/lib/activitypub/process/process-delete.ts b/server/lib/activitypub/process/process-delete.ts index 604570e74..01751422d 100644 --- a/server/lib/activitypub/process/process-delete.ts +++ b/server/lib/activitypub/process/process-delete.ts @@ -12,7 +12,7 @@ import { getOrCreateActorAndServerAndModel } from '../actor' async function processDeleteActivity (activity: ActivityDelete) { const actor = await getOrCreateActorAndServerAndModel(activity.actor) - if (actor.url === activity.id) { + if (actor.url === activity.object) { if (actor.type === 'Person') { if (!actor.Account) throw new Error('Actor ' + actor.url + ' is a person but we cannot find it in database.') @@ -25,14 +25,14 @@ async function processDeleteActivity (activity: ActivityDelete) { } { - const videoCommentInstance = await VideoCommentModel.loadByUrlAndPopulateAccount(activity.id) + const videoCommentInstance = await VideoCommentModel.loadByUrlAndPopulateAccount(activity.object) if (videoCommentInstance) { return processDeleteVideoComment(actor, videoCommentInstance) } } { - const videoInstance = await VideoModel.loadByUrlAndPopulateAccount(activity.id) + const videoInstance = await VideoModel.loadByUrlAndPopulateAccount(activity.object) if (videoInstance) { return processDeleteVideo(actor, videoInstance) } diff --git a/server/lib/activitypub/send/send-delete.ts b/server/lib/activitypub/send/send-delete.ts index 1ca031898..995a534a6 100644 --- a/server/lib/activitypub/send/send-delete.ts +++ b/server/lib/activitypub/send/send-delete.ts @@ -4,12 +4,14 @@ import { ActorModel } from '../../../models/activitypub/actor' import { VideoModel } from '../../../models/video/video' import { VideoCommentModel } from '../../../models/video/video-comment' import { VideoShareModel } from '../../../models/video/video-share' +import { getDeleteActivityPubUrl } from '../url' import { broadcastToFollowers } from './misc' async function sendDeleteVideo (video: VideoModel, t: Transaction) { + const url = getDeleteActivityPubUrl(video.url) const byActor = video.VideoChannel.Account.Actor - const data = deleteActivityData(video.url, byActor) + const data = deleteActivityData(url, video.url, byActor) const actorsInvolved = await VideoShareModel.loadActorsByShare(video.id, t) actorsInvolved.push(byActor) @@ -18,15 +20,17 @@ async function sendDeleteVideo (video: VideoModel, t: Transaction) { } async function sendDeleteActor (byActor: ActorModel, t: Transaction) { - const data = deleteActivityData(byActor.url, byActor) + const url = getDeleteActivityPubUrl(byActor.url) + const data = deleteActivityData(url, byActor.url, byActor) return broadcastToFollowers(data, byActor, [ byActor ], t) } async function sendDeleteVideoComment (videoComment: VideoCommentModel, t: Transaction) { - const byActor = videoComment.Account.Actor + const url = getDeleteActivityPubUrl(videoComment.url) - const data = deleteActivityData(videoComment.url, byActor) + const byActor = videoComment.Account.Actor + const data = deleteActivityData(url, videoComment.url, byActor) const actorsInvolved = await VideoShareModel.loadActorsByShare(videoComment.Video.id, t) actorsInvolved.push(videoComment.Video.VideoChannel.Account.Actor) @@ -45,10 +49,11 @@ export { // --------------------------------------------------------------------------- -function deleteActivityData (url: string, byActor: ActorModel): ActivityDelete { +function deleteActivityData (url: string, object: string, byActor: ActorModel): ActivityDelete { return { type: 'Delete', id: url, - actor: byActor.url + actor: byActor.url, + object } } diff --git a/server/lib/activitypub/url.ts b/server/lib/activitypub/url.ts index 0d76922e0..5705afbd6 100644 --- a/server/lib/activitypub/url.ts +++ b/server/lib/activitypub/url.ts @@ -55,6 +55,10 @@ function getAnnounceActivityPubUrl (originalUrl: string, byActor: ActorModel) { return originalUrl + '/announces/' + byActor.id } +function getDeleteActivityPubUrl (originalUrl: string) { + return originalUrl + '/delete' +} + function getUpdateActivityPubUrl (originalUrl: string, updatedAt: string) { return originalUrl + '/updates/' + updatedAt } @@ -76,5 +80,6 @@ export { getVideoViewActivityPubUrl, getVideoLikeActivityPubUrl, getVideoDislikeActivityPubUrl, - getVideoCommentActivityPubUrl + getVideoCommentActivityPubUrl, + getDeleteActivityPubUrl } diff --git a/shared/models/activitypub/activity.ts b/shared/models/activitypub/activity.ts index a87afc548..56f7103bf 100644 --- a/shared/models/activitypub/activity.ts +++ b/shared/models/activitypub/activity.ts @@ -39,6 +39,7 @@ export interface ActivityUpdate extends BaseActivity { export interface ActivityDelete extends BaseActivity { type: 'Delete' + object: string } export interface ActivityFollow extends BaseActivity { -- 2.25.1