Fix comments deleted display
This commit is contained in:
parent
923ff87da2
commit
8adf0a767f
|
@ -178,5 +178,5 @@ async function removeVideoComment (req: express.Request, res: express.Response)
|
||||||
|
|
||||||
auditLogger.delete(getAuditIdFromRes(res), new CommentAuditView(videoCommentInstance.toFormattedJSON()))
|
auditLogger.delete(getAuditIdFromRes(res), new CommentAuditView(videoCommentInstance.toFormattedJSON()))
|
||||||
|
|
||||||
return res.type('json').status(204)
|
return res.type('json').status(204).end()
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,13 +24,14 @@ import {
|
||||||
MCommentOwnerVideoReply
|
MCommentOwnerVideoReply
|
||||||
} from '../../typings/models/video'
|
} from '../../typings/models/video'
|
||||||
import { AccountModel } from '../account/account'
|
import { AccountModel } from '../account/account'
|
||||||
import { ActorModel } from '../activitypub/actor'
|
import { ActorModel, unusedActorAttributesForAPI } from '../activitypub/actor'
|
||||||
import { buildBlockedAccountSQL, buildLocalAccountIdsIn, getCommentSort, throwIfNotValid } from '../utils'
|
import { buildBlockedAccountSQL, buildLocalAccountIdsIn, getCommentSort, throwIfNotValid } from '../utils'
|
||||||
import { VideoModel } from './video'
|
import { VideoModel } from './video'
|
||||||
import { VideoChannelModel } from './video-channel'
|
import { VideoChannelModel } from './video-channel'
|
||||||
|
|
||||||
enum ScopeNames {
|
enum ScopeNames {
|
||||||
WITH_ACCOUNT = 'WITH_ACCOUNT',
|
WITH_ACCOUNT = 'WITH_ACCOUNT',
|
||||||
|
WITH_ACCOUNT_FOR_API = 'WITH_ACCOUNT_FOR_API',
|
||||||
WITH_IN_REPLY_TO = 'WITH_IN_REPLY_TO',
|
WITH_IN_REPLY_TO = 'WITH_IN_REPLY_TO',
|
||||||
WITH_VIDEO = 'WITH_VIDEO',
|
WITH_VIDEO = 'WITH_VIDEO',
|
||||||
ATTRIBUTES_FOR_API = 'ATTRIBUTES_FOR_API'
|
ATTRIBUTES_FOR_API = 'ATTRIBUTES_FOR_API'
|
||||||
|
@ -82,6 +83,22 @@ enum ScopeNames {
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
[ScopeNames.WITH_ACCOUNT_FOR_API]: {
|
||||||
|
include: [
|
||||||
|
{
|
||||||
|
model: AccountModel.unscoped(),
|
||||||
|
include: [
|
||||||
|
{
|
||||||
|
attributes: {
|
||||||
|
exclude: unusedActorAttributesForAPI
|
||||||
|
},
|
||||||
|
model: ActorModel, // Default scope includes avatar and server
|
||||||
|
required: true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
[ScopeNames.WITH_IN_REPLY_TO]: {
|
[ScopeNames.WITH_IN_REPLY_TO]: {
|
||||||
include: [
|
include: [
|
||||||
{
|
{
|
||||||
|
@ -275,18 +292,33 @@ export class VideoCommentModel extends Model<VideoCommentModel> {
|
||||||
limit: count,
|
limit: count,
|
||||||
order: getCommentSort(sort),
|
order: getCommentSort(sort),
|
||||||
where: {
|
where: {
|
||||||
videoId,
|
[Op.and]: [
|
||||||
inReplyToCommentId: null,
|
{
|
||||||
accountId: {
|
videoId
|
||||||
[Op.notIn]: Sequelize.literal(
|
},
|
||||||
'(' + buildBlockedAccountSQL(serverAccountId, userAccountId) + ')'
|
{
|
||||||
)
|
inReplyToCommentId: null
|
||||||
}
|
},
|
||||||
|
{
|
||||||
|
[Op.or]: [
|
||||||
|
{
|
||||||
|
accountId: {
|
||||||
|
[Op.notIn]: Sequelize.literal(
|
||||||
|
'(' + buildBlockedAccountSQL(serverAccountId, userAccountId) + ')'
|
||||||
|
)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
accountId: null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const scopes: (string | ScopeOptions)[] = [
|
const scopes: (string | ScopeOptions)[] = [
|
||||||
ScopeNames.WITH_ACCOUNT,
|
ScopeNames.WITH_ACCOUNT_FOR_API,
|
||||||
{
|
{
|
||||||
method: [ ScopeNames.ATTRIBUTES_FOR_API, serverAccountId, userAccountId ]
|
method: [ ScopeNames.ATTRIBUTES_FOR_API, serverAccountId, userAccountId ]
|
||||||
}
|
}
|
||||||
|
@ -328,7 +360,7 @@ export class VideoCommentModel extends Model<VideoCommentModel> {
|
||||||
}
|
}
|
||||||
|
|
||||||
const scopes: any[] = [
|
const scopes: any[] = [
|
||||||
ScopeNames.WITH_ACCOUNT,
|
ScopeNames.WITH_ACCOUNT_FOR_API,
|
||||||
{
|
{
|
||||||
method: [ ScopeNames.ATTRIBUTES_FOR_API, serverAccountId, userAccountId ]
|
method: [ ScopeNames.ATTRIBUTES_FOR_API, serverAccountId, userAccountId ]
|
||||||
}
|
}
|
||||||
|
|
|
@ -195,7 +195,7 @@ describe('Test blocklist', function () {
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should hide its comments', async function () {
|
it('Should hide its comments', async function () {
|
||||||
const resThreads = await getVideoCommentThreads(servers[0].url, videoUUID1, 0, 5, '-createdAt', servers[0].accessToken)
|
const resThreads = await getVideoCommentThreads(servers[0].url, videoUUID1, 0, 25, '-createdAt', servers[0].accessToken)
|
||||||
|
|
||||||
const threads: VideoComment[] = resThreads.body.data
|
const threads: VideoComment[] = resThreads.body.data
|
||||||
expect(threads).to.have.lengthOf(1)
|
expect(threads).to.have.lengthOf(1)
|
||||||
|
@ -467,9 +467,11 @@ describe('Test blocklist', function () {
|
||||||
|
|
||||||
it('Should hide its comments', async function () {
|
it('Should hide its comments', async function () {
|
||||||
for (const token of [ userModeratorToken, servers[0].accessToken ]) {
|
for (const token of [ userModeratorToken, servers[0].accessToken ]) {
|
||||||
const resThreads = await getVideoCommentThreads(servers[0].url, videoUUID1, 0, 5, '-createdAt', token)
|
const resThreads = await getVideoCommentThreads(servers[0].url, videoUUID1, 0, 20, '-createdAt', token)
|
||||||
|
|
||||||
|
let threads: VideoComment[] = resThreads.body.data
|
||||||
|
threads = threads.filter(t => t.isDeleted === false)
|
||||||
|
|
||||||
const threads: VideoComment[] = resThreads.body.data
|
|
||||||
expect(threads).to.have.lengthOf(1)
|
expect(threads).to.have.lengthOf(1)
|
||||||
expect(threads[0].totalReplies).to.equal(0)
|
expect(threads[0].totalReplies).to.equal(0)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user