mirror of https://github.com/Chocobozzz/PeerTube
Check threads resolve on non federated videos
parent
d470441424
commit
403c69c5a3
|
@ -91,6 +91,7 @@ async function processCreateVideoComment (activity: ActivityCreate, byActor: MAc
|
|||
let comment: MCommentOwnerVideo
|
||||
try {
|
||||
const resolveThreadResult = await resolveThread({ url: commentObject.id, isVideo: false })
|
||||
|
||||
video = resolveThreadResult.video
|
||||
created = resolveThreadResult.commentCreated
|
||||
comment = resolveThreadResult.comment
|
||||
|
@ -104,16 +105,18 @@ async function processCreateVideoComment (activity: ActivityCreate, byActor: MAc
|
|||
}
|
||||
|
||||
// Try to not forward unwanted commments on our videos
|
||||
if (video.isOwned() && await isBlockedByServerOrAccount(comment.Account, video.VideoChannel.Account)) {
|
||||
logger.info('Skip comment forward from blocked account or server %s.', comment.Account.Actor.url)
|
||||
return
|
||||
}
|
||||
if (video.isOwned()) {
|
||||
if (await isBlockedByServerOrAccount(comment.Account, video.VideoChannel.Account)) {
|
||||
logger.info('Skip comment forward from blocked account or server %s.', comment.Account.Actor.url)
|
||||
return
|
||||
}
|
||||
|
||||
if (video.isOwned() && created === true) {
|
||||
// Don't resend the activity to the sender
|
||||
const exceptions = [ byActor ]
|
||||
if (created === true) {
|
||||
// Don't resend the activity to the sender
|
||||
const exceptions = [ byActor ]
|
||||
|
||||
await forwardVideoRelatedActivity(activity, undefined, exceptions, video)
|
||||
await forwardVideoRelatedActivity(activity, undefined, exceptions, video)
|
||||
}
|
||||
}
|
||||
|
||||
if (created && notify) Notifier.Instance.notifyOnNewComment(comment)
|
||||
|
|
|
@ -29,20 +29,18 @@ async function resolveThread (params: ResolveThreadParams): ResolveThreadResult
|
|||
if (params.comments === undefined) params.comments = []
|
||||
|
||||
// Already have this comment?
|
||||
if (isVideo !== true) {
|
||||
if (isVideo === false) {
|
||||
const result = await resolveCommentFromDB(params)
|
||||
if (result) return result
|
||||
}
|
||||
|
||||
try {
|
||||
if (isVideo !== false) return await tryResolveThreadFromVideo(params)
|
||||
|
||||
return resolveParentComment(params)
|
||||
if (isVideo === true) return tryResolveThreadFromVideo(params)
|
||||
} catch (err) {
|
||||
logger.debug('Cannot get or create account and video and channel for reply %s, fetch comment', url, { err })
|
||||
|
||||
return resolveParentComment(params)
|
||||
}
|
||||
|
||||
return resolveParentComment(params)
|
||||
}
|
||||
|
||||
export {
|
||||
|
@ -85,6 +83,10 @@ async function tryResolveThreadFromVideo (params: ResolveThreadParams) {
|
|||
const syncParam = { likes: true, dislikes: true, shares: true, comments: false, thumbnail: true, refreshVideo: false }
|
||||
const { video } = await getOrCreateVideoAndAccountAndChannel({ videoObject: url, syncParam })
|
||||
|
||||
if (video.isOwned() && !video.hasPrivacyForFederation()) {
|
||||
throw new Error('Cannot resolve thread of video with privacy that is not compatible with federation')
|
||||
}
|
||||
|
||||
let resultComment: MCommentOwnerVideo
|
||||
if (comments.length !== 0) {
|
||||
const firstReply = comments[comments.length - 1] as MCommentOwnerVideo
|
||||
|
|
Loading…
Reference in New Issue