mirror of https://github.com/Chocobozzz/PeerTube
Fix delete activities
parent
bb82394c0d
commit
c3badc81fe
|
@ -12,7 +12,7 @@ import { getOrCreateActorAndServerAndModel } from '../actor'
|
||||||
async function processDeleteActivity (activity: ActivityDelete) {
|
async function processDeleteActivity (activity: ActivityDelete) {
|
||||||
const actor = await getOrCreateActorAndServerAndModel(activity.actor)
|
const actor = await getOrCreateActorAndServerAndModel(activity.actor)
|
||||||
|
|
||||||
if (actor.url === activity.id) {
|
if (actor.url === activity.object) {
|
||||||
if (actor.type === 'Person') {
|
if (actor.type === 'Person') {
|
||||||
if (!actor.Account) throw new Error('Actor ' + actor.url + ' is a person but we cannot find it in database.')
|
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) {
|
if (videoCommentInstance) {
|
||||||
return processDeleteVideoComment(actor, videoCommentInstance)
|
return processDeleteVideoComment(actor, videoCommentInstance)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
const videoInstance = await VideoModel.loadByUrlAndPopulateAccount(activity.id)
|
const videoInstance = await VideoModel.loadByUrlAndPopulateAccount(activity.object)
|
||||||
if (videoInstance) {
|
if (videoInstance) {
|
||||||
return processDeleteVideo(actor, videoInstance)
|
return processDeleteVideo(actor, videoInstance)
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,12 +4,14 @@ import { ActorModel } from '../../../models/activitypub/actor'
|
||||||
import { VideoModel } from '../../../models/video/video'
|
import { VideoModel } from '../../../models/video/video'
|
||||||
import { VideoCommentModel } from '../../../models/video/video-comment'
|
import { VideoCommentModel } from '../../../models/video/video-comment'
|
||||||
import { VideoShareModel } from '../../../models/video/video-share'
|
import { VideoShareModel } from '../../../models/video/video-share'
|
||||||
|
import { getDeleteActivityPubUrl } from '../url'
|
||||||
import { broadcastToFollowers } from './misc'
|
import { broadcastToFollowers } from './misc'
|
||||||
|
|
||||||
async function sendDeleteVideo (video: VideoModel, t: Transaction) {
|
async function sendDeleteVideo (video: VideoModel, t: Transaction) {
|
||||||
|
const url = getDeleteActivityPubUrl(video.url)
|
||||||
const byActor = video.VideoChannel.Account.Actor
|
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)
|
const actorsInvolved = await VideoShareModel.loadActorsByShare(video.id, t)
|
||||||
actorsInvolved.push(byActor)
|
actorsInvolved.push(byActor)
|
||||||
|
@ -18,15 +20,17 @@ async function sendDeleteVideo (video: VideoModel, t: Transaction) {
|
||||||
}
|
}
|
||||||
|
|
||||||
async function sendDeleteActor (byActor: ActorModel, 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)
|
return broadcastToFollowers(data, byActor, [ byActor ], t)
|
||||||
}
|
}
|
||||||
|
|
||||||
async function sendDeleteVideoComment (videoComment: VideoCommentModel, t: Transaction) {
|
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)
|
const actorsInvolved = await VideoShareModel.loadActorsByShare(videoComment.Video.id, t)
|
||||||
actorsInvolved.push(videoComment.Video.VideoChannel.Account.Actor)
|
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 {
|
return {
|
||||||
type: 'Delete',
|
type: 'Delete',
|
||||||
id: url,
|
id: url,
|
||||||
actor: byActor.url
|
actor: byActor.url,
|
||||||
|
object
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,6 +55,10 @@ function getAnnounceActivityPubUrl (originalUrl: string, byActor: ActorModel) {
|
||||||
return originalUrl + '/announces/' + byActor.id
|
return originalUrl + '/announces/' + byActor.id
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getDeleteActivityPubUrl (originalUrl: string) {
|
||||||
|
return originalUrl + '/delete'
|
||||||
|
}
|
||||||
|
|
||||||
function getUpdateActivityPubUrl (originalUrl: string, updatedAt: string) {
|
function getUpdateActivityPubUrl (originalUrl: string, updatedAt: string) {
|
||||||
return originalUrl + '/updates/' + updatedAt
|
return originalUrl + '/updates/' + updatedAt
|
||||||
}
|
}
|
||||||
|
@ -76,5 +80,6 @@ export {
|
||||||
getVideoViewActivityPubUrl,
|
getVideoViewActivityPubUrl,
|
||||||
getVideoLikeActivityPubUrl,
|
getVideoLikeActivityPubUrl,
|
||||||
getVideoDislikeActivityPubUrl,
|
getVideoDislikeActivityPubUrl,
|
||||||
getVideoCommentActivityPubUrl
|
getVideoCommentActivityPubUrl,
|
||||||
|
getDeleteActivityPubUrl
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,6 +39,7 @@ export interface ActivityUpdate extends BaseActivity {
|
||||||
|
|
||||||
export interface ActivityDelete extends BaseActivity {
|
export interface ActivityDelete extends BaseActivity {
|
||||||
type: 'Delete'
|
type: 'Delete'
|
||||||
|
object: string
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ActivityFollow extends BaseActivity {
|
export interface ActivityFollow extends BaseActivity {
|
||||||
|
|
Loading…
Reference in New Issue