mirror of
				https://codeberg.org/yeentown/barkey.git
				synced 2025-11-04 07:24:13 +00:00 
			
		
		
		
	perf: early return users/notes and users/featured-notes if me is blocked by requesting user (#12663)
This commit is contained in:
		
							parent
							
								
									5cc3d3c873
								
							
						
					
					
						commit
						bd4d8694dd
					
				
					 2 changed files with 16 additions and 3 deletions
				
			
		| 
						 | 
					@ -51,6 +51,13 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
 | 
				
			||||||
		private cacheService: CacheService,
 | 
							private cacheService: CacheService,
 | 
				
			||||||
	) {
 | 
						) {
 | 
				
			||||||
		super(meta, paramDef, async (ps, me) => {
 | 
							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);
 | 
								let noteIds = await this.featuredService.getPerUserNotesRanking(ps.userId, 50);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			noteIds.sort((a, b) => a > b ? -1 : 1);
 | 
								noteIds.sort((a, b) => a > b ? -1 : 1);
 | 
				
			||||||
| 
						 | 
					@ -65,11 +72,9 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			const [
 | 
								const [
 | 
				
			||||||
				userIdsWhoMeMuting,
 | 
									userIdsWhoMeMuting,
 | 
				
			||||||
				userIdsWhoBlockingMe,
 | 
					 | 
				
			||||||
			] = me ? await Promise.all([
 | 
								] = me ? await Promise.all([
 | 
				
			||||||
				this.cacheService.userMutingsCache.fetch(me.id),
 | 
									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')
 | 
								const query = this.notesRepository.createQueryBuilder('note')
 | 
				
			||||||
				.where('note.id IN (:...noteIds)', { noteIds: noteIds })
 | 
									.where('note.id IN (:...noteIds)', { noteIds: noteIds })
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -86,6 +86,14 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if (ps.withReplies && ps.withFiles) throw new ApiError(meta.errors.bothWithRepliesAndWithFiles);
 | 
								if (ps.withReplies && ps.withFiles) throw new ApiError(meta.errors.bothWithRepliesAndWithFiles);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// early return if me is blocked by requesting user
 | 
				
			||||||
 | 
								if (me != null) {
 | 
				
			||||||
 | 
									const userIdsWhoBlockingMe = await this.cacheService.userBlockedCache.fetch(me.id);
 | 
				
			||||||
 | 
									if (userIdsWhoBlockingMe.has(ps.userId)) {
 | 
				
			||||||
 | 
										return [];
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if (!serverSettings.enableFanoutTimeline) {
 | 
								if (!serverSettings.enableFanoutTimeline) {
 | 
				
			||||||
				const timeline = await this.getFromDb({
 | 
									const timeline = await this.getFromDb({
 | 
				
			||||||
					untilId,
 | 
										untilId,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue