diff --git a/server/models/video/video-comment.ts b/server/models/video/video-comment.ts index b7ed6240e..6d60271e6 100644 --- a/server/models/video/video-comment.ts +++ b/server/models/video/video-comment.ts @@ -381,13 +381,20 @@ export class VideoCommentModel extends Model { return VideoCommentModel.findAndCountAll(query) } - static listForFeed (start: number, count: number, videoId?: number): Bluebird { + static async listForFeed (start: number, count: number, videoId?: number): Promise { + const serverActor = await getServerActor() + const query = { order: [ [ 'createdAt', 'DESC' ] ] as Order, offset: start, limit: count, where: { - deletedAt: null + deletedAt: null, + accountId: { + [Op.notIn]: Sequelize.literal( + '(' + buildBlockedAccountSQL(serverActor.Account.id) + ')' + ) + } }, include: [ { diff --git a/server/tests/feeds/feeds.ts b/server/tests/feeds/feeds.ts index d978123cf..7fac921a3 100644 --- a/server/tests/feeds/feeds.ts +++ b/server/tests/feeds/feeds.ts @@ -20,6 +20,7 @@ import { addVideoCommentThread } from '../../../shared/extra-utils/videos/video- import { waitJobs } from '../../../shared/extra-utils/server/jobs' import { User } from '../../../shared/models/users' import { VideoPrivacy } from '@shared/models' +import { addAccountToServerBlocklist } from '@shared/extra-utils/users/blocklist' chai.use(require('chai-xml')) chai.use(require('chai-json-schema')) @@ -216,6 +217,17 @@ describe('Test syndication feeds', () => { expect(jsonObj.items[1].html_content).to.equal('super comment 1') } }) + + it('Should not list comments from muted accounts or instances', async function () { + await addAccountToServerBlocklist(servers[1].url, servers[1].accessToken, 'root@localhost:' + servers[0].port) + + { + const json = await getJSONfeed(servers[1].url, 'video-comments', { version: 2 }) + const jsonObj = JSON.parse(json.text) + expect(jsonObj.items.length).to.be.equal(0) + } + + }) }) after(async function () {