summaryrefslogtreecommitdiff
path: root/src/server/api/common/inject-featured.ts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2021-11-12 02:02:25 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2021-11-12 02:02:25 +0900
commit0e4a111f81cceed275d9bec2695f6e401fb654d8 (patch)
tree40874799472fa07416f17b50a398ac33b7771905 /src/server/api/common/inject-featured.ts
parentupdate deps (diff)
downloadmisskey-0e4a111f81cceed275d9bec2695f6e401fb654d8.tar.gz
misskey-0e4a111f81cceed275d9bec2695f6e401fb654d8.tar.bz2
misskey-0e4a111f81cceed275d9bec2695f6e401fb654d8.zip
refactoring
Resolve #7779
Diffstat (limited to 'src/server/api/common/inject-featured.ts')
-rw-r--r--src/server/api/common/inject-featured.ts56
1 files changed, 0 insertions, 56 deletions
diff --git a/src/server/api/common/inject-featured.ts b/src/server/api/common/inject-featured.ts
deleted file mode 100644
index 1dc13c83ef..0000000000
--- a/src/server/api/common/inject-featured.ts
+++ /dev/null
@@ -1,56 +0,0 @@
-import rndstr from 'rndstr';
-import { Note } from '@/models/entities/note';
-import { User } from '@/models/entities/user';
-import { Notes, UserProfiles, NoteReactions } from '@/models/index';
-import { generateMutedUserQuery } from './generate-muted-user-query';
-import { generateBlockedUserQuery } from './generate-block-query';
-
-// TODO: リアクション、Renote、返信などをしたノートは除外する
-
-export async function injectFeatured(timeline: Note[], user?: User | null) {
- if (timeline.length < 5) return;
-
- if (user) {
- const profile = await UserProfiles.findOneOrFail(user.id);
- if (!profile.injectFeaturedNote) return;
- }
-
- const max = 30;
- const day = 1000 * 60 * 60 * 24 * 3; // 3日前まで
-
- const query = Notes.createQueryBuilder('note')
- .addSelect('note.score')
- .where('note.userHost IS NULL')
- .andWhere(`note.score > 0`)
- .andWhere(`note.createdAt > :date`, { date: new Date(Date.now() - day) })
- .andWhere(`note.visibility = 'public'`)
- .innerJoinAndSelect('note.user', 'user');
-
- if (user) {
- query.andWhere('note.userId != :userId', { userId: user.id });
-
- generateMutedUserQuery(query, user);
- generateBlockedUserQuery(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
- .orderBy('note.score', 'DESC')
- .take(max)
- .getMany();
-
- if (notes.length === 0) return;
-
- // Pick random one
- const featured = notes[Math.floor(Math.random() * notes.length)];
-
- (featured as any)._featuredId_ = rndstr('a-z0-9', 8);
-
- // Inject featured
- timeline.splice(3, 0, featured);
-}