Better featured injection

This commit is contained in:
syuilo 2020-02-22 06:49:12 +09:00
parent c9f8c12f5b
commit 8aab828c65

View file

@ -1,7 +1,7 @@
import rndstr from 'rndstr'; import rndstr from 'rndstr';
import { Note } from '../../../models/entities/note'; import { Note } from '../../../models/entities/note';
import { User } from '../../../models/entities/user'; import { User } from '../../../models/entities/user';
import { Notes, UserProfiles } from '../../../models'; import { Notes, UserProfiles, NoteReactions } from '../../../models';
import { generateMuteQuery } from './generate-mute-query'; import { generateMuteQuery } from './generate-mute-query';
import { ensure } from '../../../prelude/ensure'; import { ensure } from '../../../prelude/ensure';
@ -26,9 +26,17 @@ export async function injectFeatured(timeline: Note[], user?: User | null) {
.andWhere(`note.visibility = 'public'`) .andWhere(`note.visibility = 'public'`)
.leftJoinAndSelect('note.user', 'user'); .leftJoinAndSelect('note.user', 'user');
if (user) query.andWhere('note.userId != :userId', { userId: user.id }); if (user) {
query.andWhere('note.userId != :userId', { userId: user.id });
if (user) generateMuteQuery(query, user); generateMuteQuery(query, user);
const reactionQuery = NoteReactions.createQueryBuilder('reaction')
.select('reaction.noteId')
.where('reaction.userId = :userId', { userId: user.id });
query.andWhere(`note.id NOT IN (${ reactionQuery.getQuery() })`);
}
const notes = await query const notes = await query
.orderBy('note.score', 'DESC') .orderBy('note.score', 'DESC')