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,
 | 
			
		||||
	) {
 | 
			
		||||
		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 })
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
 | 
			
		||||
			// 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) {
 | 
			
		||||
				const timeline = await this.getFromDb({
 | 
			
		||||
					untilId,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue