mirror of
				https://codeberg.org/yeentown/barkey.git
				synced 2025-10-31 13:34:12 +00:00 
			
		
		
		
	
							parent
							
								
									beded1c7ce
								
							
						
					
					
						commit
						90f8d8e575
					
				
					 1 changed files with 22 additions and 3 deletions
				
			
		|  | @ -13,6 +13,8 @@ import { QueryService } from '@/core/QueryService.js'; | ||||||
| import { NoteEntityService } from '@/core/entities/NoteEntityService.js'; | import { NoteEntityService } from '@/core/entities/NoteEntityService.js'; | ||||||
| import { DI } from '@/di-symbols.js'; | import { DI } from '@/di-symbols.js'; | ||||||
| import { MetaService } from '@/core/MetaService.js'; | import { MetaService } from '@/core/MetaService.js'; | ||||||
|  | import { CacheService } from '@/core/CacheService.js'; | ||||||
|  | import { UtilityService } from '@/core/UtilityService.js'; | ||||||
| 
 | 
 | ||||||
| export const meta = { | export const meta = { | ||||||
| 	tags: ['notes', 'hashtags'], | 	tags: ['notes', 'hashtags'], | ||||||
|  | @ -73,23 +75,32 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- | ||||||
| 		private noteEntityService: NoteEntityService, | 		private noteEntityService: NoteEntityService, | ||||||
| 		private queryService: QueryService, | 		private queryService: QueryService, | ||||||
| 		private metaService: MetaService, | 		private metaService: MetaService, | ||||||
|  | 		private cacheService: CacheService, | ||||||
|  | 		private utilityService: UtilityService, | ||||||
| 	) { | 	) { | ||||||
| 		super(meta, paramDef, async (ps, me) => { | 		super(meta, paramDef, async (ps, me) => { | ||||||
|  | 			const meta = await this.metaService.fetch(true); | ||||||
|  | 
 | ||||||
| 			const query = this.queryService.makePaginationQuery(this.notesRepository.createQueryBuilder('note'), ps.sinceId, ps.untilId) | 			const query = this.queryService.makePaginationQuery(this.notesRepository.createQueryBuilder('note'), ps.sinceId, ps.untilId) | ||||||
|  | 				.andWhere('note.visibility = \'public\'') | ||||||
| 				.innerJoinAndSelect('note.user', 'user') | 				.innerJoinAndSelect('note.user', 'user') | ||||||
| 				.leftJoinAndSelect('note.reply', 'reply') | 				.leftJoinAndSelect('note.reply', 'reply') | ||||||
| 				.leftJoinAndSelect('note.renote', 'renote') | 				.leftJoinAndSelect('note.renote', 'renote') | ||||||
| 				.leftJoinAndSelect('reply.user', 'replyUser') | 				.leftJoinAndSelect('reply.user', 'replyUser') | ||||||
| 				.leftJoinAndSelect('renote.user', 'renoteUser'); | 				.leftJoinAndSelect('renote.user', 'renoteUser'); | ||||||
| 
 | 
 | ||||||
| 			const meta = await this.metaService.fetch(true); |  | ||||||
| 
 |  | ||||||
| 			if (!meta.enableBotTrending) query.andWhere('user.isBot = FALSE'); | 			if (!meta.enableBotTrending) query.andWhere('user.isBot = FALSE'); | ||||||
| 
 | 
 | ||||||
| 			this.queryService.generateVisibilityQuery(query, me); | 			this.queryService.generateVisibilityQuery(query, me); | ||||||
| 			if (me) this.queryService.generateMutedUserQuery(query, me); | 			if (me) this.queryService.generateMutedUserQuery(query, me); | ||||||
| 			if (me) this.queryService.generateBlockedUserQuery(query, me); | 			if (me) this.queryService.generateBlockedUserQuery(query, me); | ||||||
| 
 | 
 | ||||||
|  | 			const [ | ||||||
|  | 				followings, | ||||||
|  | 			] = me ? await Promise.all([ | ||||||
|  | 				this.cacheService.userFollowingsCache.fetch(me.id), | ||||||
|  | 			]) : [undefined]; | ||||||
|  | 
 | ||||||
| 			try { | 			try { | ||||||
| 				if (ps.tag) { | 				if (ps.tag) { | ||||||
| 					if (!safeForSql(normalizeForSearch(ps.tag))) throw new Error('Injection'); | 					if (!safeForSql(normalizeForSearch(ps.tag))) throw new Error('Injection'); | ||||||
|  | @ -140,7 +151,15 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 			// Search notes
 | 			// Search notes
 | ||||||
| 			const notes = await query.limit(ps.limit).getMany(); | 			let notes = await query.limit(ps.limit).getMany(); | ||||||
|  | 
 | ||||||
|  | 			notes = notes.filter(note => { | ||||||
|  | 				if (note.user?.isSilenced && me && followings && note.userId !== me.id && !followings[note.userId]) return false; | ||||||
|  | 				if (note.user?.isSuspended) return false; | ||||||
|  | 				if (this.utilityService.isBlockedHost(meta.blockedHosts, note.userHost)) return false; | ||||||
|  | 				if (this.utilityService.isSilencedHost(meta.silencedHosts, note.userHost)) return false; | ||||||
|  | 				return true; | ||||||
|  | 			}); | ||||||
| 
 | 
 | ||||||
| 			return await this.noteEntityService.packMany(notes, me); | 			return await this.noteEntityService.packMany(notes, me); | ||||||
| 		}); | 		}); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue