diff options
Diffstat (limited to 'server/models')
-rw-r--r-- | server/models/video/video-comment.ts | 52 |
1 files changed, 42 insertions, 10 deletions
diff --git a/server/models/video/video-comment.ts b/server/models/video/video-comment.ts index 7c890ce6d..dfeb1c4e7 100644 --- a/server/models/video/video-comment.ts +++ b/server/models/video/video-comment.ts | |||
@@ -24,13 +24,14 @@ import { | |||
24 | MCommentOwnerVideoReply | 24 | MCommentOwnerVideoReply |
25 | } from '../../typings/models/video' | 25 | } from '../../typings/models/video' |
26 | import { AccountModel } from '../account/account' | 26 | import { AccountModel } from '../account/account' |
27 | import { ActorModel } from '../activitypub/actor' | 27 | import { ActorModel, unusedActorAttributesForAPI } from '../activitypub/actor' |
28 | import { buildBlockedAccountSQL, buildLocalAccountIdsIn, getCommentSort, throwIfNotValid } from '../utils' | 28 | import { buildBlockedAccountSQL, buildLocalAccountIdsIn, getCommentSort, throwIfNotValid } from '../utils' |
29 | import { VideoModel } from './video' | 29 | import { VideoModel } from './video' |
30 | import { VideoChannelModel } from './video-channel' | 30 | import { VideoChannelModel } from './video-channel' |
31 | 31 | ||
32 | enum ScopeNames { | 32 | enum ScopeNames { |
33 | WITH_ACCOUNT = 'WITH_ACCOUNT', | 33 | WITH_ACCOUNT = 'WITH_ACCOUNT', |
34 | WITH_ACCOUNT_FOR_API = 'WITH_ACCOUNT_FOR_API', | ||
34 | WITH_IN_REPLY_TO = 'WITH_IN_REPLY_TO', | 35 | WITH_IN_REPLY_TO = 'WITH_IN_REPLY_TO', |
35 | WITH_VIDEO = 'WITH_VIDEO', | 36 | WITH_VIDEO = 'WITH_VIDEO', |
36 | ATTRIBUTES_FOR_API = 'ATTRIBUTES_FOR_API' | 37 | ATTRIBUTES_FOR_API = 'ATTRIBUTES_FOR_API' |
@@ -82,6 +83,22 @@ enum ScopeNames { | |||
82 | } | 83 | } |
83 | ] | 84 | ] |
84 | }, | 85 | }, |
86 | [ScopeNames.WITH_ACCOUNT_FOR_API]: { | ||
87 | include: [ | ||
88 | { | ||
89 | model: AccountModel.unscoped(), | ||
90 | include: [ | ||
91 | { | ||
92 | attributes: { | ||
93 | exclude: unusedActorAttributesForAPI | ||
94 | }, | ||
95 | model: ActorModel, // Default scope includes avatar and server | ||
96 | required: true | ||
97 | } | ||
98 | ] | ||
99 | } | ||
100 | ] | ||
101 | }, | ||
85 | [ScopeNames.WITH_IN_REPLY_TO]: { | 102 | [ScopeNames.WITH_IN_REPLY_TO]: { |
86 | include: [ | 103 | include: [ |
87 | { | 104 | { |
@@ -275,18 +292,33 @@ export class VideoCommentModel extends Model<VideoCommentModel> { | |||
275 | limit: count, | 292 | limit: count, |
276 | order: getCommentSort(sort), | 293 | order: getCommentSort(sort), |
277 | where: { | 294 | where: { |
278 | videoId, | 295 | [Op.and]: [ |
279 | inReplyToCommentId: null, | 296 | { |
280 | accountId: { | 297 | videoId |
281 | [Op.notIn]: Sequelize.literal( | 298 | }, |
282 | '(' + buildBlockedAccountSQL(serverAccountId, userAccountId) + ')' | 299 | { |
283 | ) | 300 | inReplyToCommentId: null |
284 | } | 301 | }, |
302 | { | ||
303 | [Op.or]: [ | ||
304 | { | ||
305 | accountId: { | ||
306 | [Op.notIn]: Sequelize.literal( | ||
307 | '(' + buildBlockedAccountSQL(serverAccountId, userAccountId) + ')' | ||
308 | ) | ||
309 | } | ||
310 | }, | ||
311 | { | ||
312 | accountId: null | ||
313 | } | ||
314 | ] | ||
315 | } | ||
316 | ] | ||
285 | } | 317 | } |
286 | } | 318 | } |
287 | 319 | ||
288 | const scopes: (string | ScopeOptions)[] = [ | 320 | const scopes: (string | ScopeOptions)[] = [ |
289 | ScopeNames.WITH_ACCOUNT, | 321 | ScopeNames.WITH_ACCOUNT_FOR_API, |
290 | { | 322 | { |
291 | method: [ ScopeNames.ATTRIBUTES_FOR_API, serverAccountId, userAccountId ] | 323 | method: [ ScopeNames.ATTRIBUTES_FOR_API, serverAccountId, userAccountId ] |
292 | } | 324 | } |
@@ -328,7 +360,7 @@ export class VideoCommentModel extends Model<VideoCommentModel> { | |||
328 | } | 360 | } |
329 | 361 | ||
330 | const scopes: any[] = [ | 362 | const scopes: any[] = [ |
331 | ScopeNames.WITH_ACCOUNT, | 363 | ScopeNames.WITH_ACCOUNT_FOR_API, |
332 | { | 364 | { |
333 | method: [ ScopeNames.ATTRIBUTES_FOR_API, serverAccountId, userAccountId ] | 365 | method: [ ScopeNames.ATTRIBUTES_FOR_API, serverAccountId, userAccountId ] |
334 | } | 366 | } |