Check threads resolve on non federated videos
This commit is contained in:
parent
d470441424
commit
403c69c5a3
2 changed files with 19 additions and 14 deletions
|
@ -91,6 +91,7 @@ async function processCreateVideoComment (activity: ActivityCreate, byActor: MAc
|
||||||
let comment: MCommentOwnerVideo
|
let comment: MCommentOwnerVideo
|
||||||
try {
|
try {
|
||||||
const resolveThreadResult = await resolveThread({ url: commentObject.id, isVideo: false })
|
const resolveThreadResult = await resolveThread({ url: commentObject.id, isVideo: false })
|
||||||
|
|
||||||
video = resolveThreadResult.video
|
video = resolveThreadResult.video
|
||||||
created = resolveThreadResult.commentCreated
|
created = resolveThreadResult.commentCreated
|
||||||
comment = resolveThreadResult.comment
|
comment = resolveThreadResult.comment
|
||||||
|
@ -104,16 +105,18 @@ async function processCreateVideoComment (activity: ActivityCreate, byActor: MAc
|
||||||
}
|
}
|
||||||
|
|
||||||
// Try to not forward unwanted commments on our videos
|
// Try to not forward unwanted commments on our videos
|
||||||
if (video.isOwned() && await isBlockedByServerOrAccount(comment.Account, video.VideoChannel.Account)) {
|
if (video.isOwned()) {
|
||||||
logger.info('Skip comment forward from blocked account or server %s.', comment.Account.Actor.url)
|
if (await isBlockedByServerOrAccount(comment.Account, video.VideoChannel.Account)) {
|
||||||
return
|
logger.info('Skip comment forward from blocked account or server %s.', comment.Account.Actor.url)
|
||||||
}
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if (video.isOwned() && created === true) {
|
if (created === true) {
|
||||||
// Don't resend the activity to the sender
|
// Don't resend the activity to the sender
|
||||||
const exceptions = [ byActor ]
|
const exceptions = [ byActor ]
|
||||||
|
|
||||||
await forwardVideoRelatedActivity(activity, undefined, exceptions, video)
|
await forwardVideoRelatedActivity(activity, undefined, exceptions, video)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (created && notify) Notifier.Instance.notifyOnNewComment(comment)
|
if (created && notify) Notifier.Instance.notifyOnNewComment(comment)
|
||||||
|
|
|
@ -29,20 +29,18 @@ async function resolveThread (params: ResolveThreadParams): ResolveThreadResult
|
||||||
if (params.comments === undefined) params.comments = []
|
if (params.comments === undefined) params.comments = []
|
||||||
|
|
||||||
// Already have this comment?
|
// Already have this comment?
|
||||||
if (isVideo !== true) {
|
if (isVideo === false) {
|
||||||
const result = await resolveCommentFromDB(params)
|
const result = await resolveCommentFromDB(params)
|
||||||
if (result) return result
|
if (result) return result
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (isVideo !== false) return await tryResolveThreadFromVideo(params)
|
if (isVideo === true) return tryResolveThreadFromVideo(params)
|
||||||
|
|
||||||
return resolveParentComment(params)
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
logger.debug('Cannot get or create account and video and channel for reply %s, fetch comment', url, { 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 {
|
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 syncParam = { likes: true, dislikes: true, shares: true, comments: false, thumbnail: true, refreshVideo: false }
|
||||||
const { video } = await getOrCreateVideoAndAccountAndChannel({ videoObject: url, syncParam })
|
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
|
let resultComment: MCommentOwnerVideo
|
||||||
if (comments.length !== 0) {
|
if (comments.length !== 0) {
|
||||||
const firstReply = comments[comments.length - 1] as MCommentOwnerVideo
|
const firstReply = comments[comments.length - 1] as MCommentOwnerVideo
|
||||||
|
|
Loading…
Reference in a new issue