]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/models/video/video-comment.ts
Fix comments deleted display
[github/Chocobozzz/PeerTube.git] / server / models / video / video-comment.ts
index 7c890ce6dab569e166b50a56812bfcf4346e0cda..dfeb1c4e79d2b8c8281d76f714ba023a0fb7e51f 100644 (file)
@@ -24,13 +24,14 @@ import {
   MCommentOwnerVideoReply
 } from '../../typings/models/video'
 import { AccountModel } from '../account/account'
-import { ActorModel } from '../activitypub/actor'
+import { ActorModel, unusedActorAttributesForAPI } from '../activitypub/actor'
 import { buildBlockedAccountSQL, buildLocalAccountIdsIn, getCommentSort, throwIfNotValid } from '../utils'
 import { VideoModel } from './video'
 import { VideoChannelModel } from './video-channel'
 
 enum ScopeNames {
   WITH_ACCOUNT = 'WITH_ACCOUNT',
+  WITH_ACCOUNT_FOR_API = 'WITH_ACCOUNT_FOR_API',
   WITH_IN_REPLY_TO = 'WITH_IN_REPLY_TO',
   WITH_VIDEO = 'WITH_VIDEO',
   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]: {
     include: [
       {
@@ -275,18 +292,33 @@ export class VideoCommentModel extends Model<VideoCommentModel> {
       limit: count,
       order: getCommentSort(sort),
       where: {
-        videoId,
-        inReplyToCommentId: null,
-        accountId: {
-          [Op.notIn]: Sequelize.literal(
-            '(' + buildBlockedAccountSQL(serverAccountId, userAccountId) + ')'
-          )
-        }
+        [Op.and]: [
+          {
+            videoId
+          },
+          {
+            inReplyToCommentId: null
+          },
+          {
+            [Op.or]: [
+              {
+                accountId: {
+                  [Op.notIn]: Sequelize.literal(
+                    '(' + buildBlockedAccountSQL(serverAccountId, userAccountId) + ')'
+                  )
+                }
+              },
+              {
+                accountId: null
+              }
+            ]
+          }
+        ]
       }
     }
 
     const scopes: (string | ScopeOptions)[] = [
-      ScopeNames.WITH_ACCOUNT,
+      ScopeNames.WITH_ACCOUNT_FOR_API,
       {
         method: [ ScopeNames.ATTRIBUTES_FOR_API, serverAccountId, userAccountId ]
       }
@@ -328,7 +360,7 @@ export class VideoCommentModel extends Model<VideoCommentModel> {
     }
 
     const scopes: any[] = [
-      ScopeNames.WITH_ACCOUNT,
+      ScopeNames.WITH_ACCOUNT_FOR_API,
       {
         method: [ ScopeNames.ATTRIBUTES_FOR_API, serverAccountId, userAccountId ]
       }