diff options
| author | anatawa12 <anatawa12@icloud.com> | 2023-12-15 11:24:13 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-12-15 11:24:13 +0900 |
| commit | bd4d8694dda63dfe8093e605bcb9184231818cad (patch) | |
| tree | 7f23181751d5b020df94b3aa1b1793b99d4bfbcb /packages/backend/src/server/api/endpoints/users/featured-notes.ts | |
| parent | Remove an unnecessary type assertion (#12666) (diff) | |
| download | sharkey-bd4d8694dda63dfe8093e605bcb9184231818cad.tar.gz sharkey-bd4d8694dda63dfe8093e605bcb9184231818cad.tar.bz2 sharkey-bd4d8694dda63dfe8093e605bcb9184231818cad.zip | |
perf: early return users/notes and users/featured-notes if me is blocked by requesting user (#12663)
Diffstat (limited to 'packages/backend/src/server/api/endpoints/users/featured-notes.ts')
| -rw-r--r-- | packages/backend/src/server/api/endpoints/users/featured-notes.ts | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/packages/backend/src/server/api/endpoints/users/featured-notes.ts b/packages/backend/src/server/api/endpoints/users/featured-notes.ts index f84148d727..7243aa3b3e 100644 --- a/packages/backend/src/server/api/endpoints/users/featured-notes.ts +++ b/packages/backend/src/server/api/endpoints/users/featured-notes.ts @@ -51,6 +51,13 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- private cacheService: CacheService, ) { super(meta, paramDef, async (ps, me) => { + const userIdsWhoBlockingMe = me ? await this.cacheService.userBlockedCache.fetch(me.id) : new Set<string>(); + + // early return if me is blocked by requesting user + if (userIdsWhoBlockingMe.has(ps.userId)) { + return []; + } + let noteIds = await this.featuredService.getPerUserNotesRanking(ps.userId, 50); noteIds.sort((a, b) => a > b ? -1 : 1); @@ -65,11 +72,9 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- const [ userIdsWhoMeMuting, - userIdsWhoBlockingMe, ] = me ? await Promise.all([ this.cacheService.userMutingsCache.fetch(me.id), - this.cacheService.userBlockedCache.fetch(me.id), - ]) : [new Set<string>(), new Set<string>()]; + ]) : [new Set<string>()]; const query = this.notesRepository.createQueryBuilder('note') .where('note.id IN (:...noteIds)', { noteIds: noteIds }) |