pack(Many) の me が optional にならないように
This commit is contained in:
		| @@ -93,7 +93,7 @@ export class AnnouncementService { | ||||
| 			userId: values.userId, | ||||
| 		}).then(x => this.announcementsRepository.findOneByOrFail(x.identifiers[0])); | ||||
|  | ||||
| 		const packed = (await this.packMany([announcement]))[0]; | ||||
| 		const packed = (await this.packMany([announcement], null))[0]; | ||||
|  | ||||
| 		if (values.userId) { | ||||
| 			this.globalEventService.publishMainStream(values.userId, 'announcementCreated', { | ||||
| @@ -366,7 +366,7 @@ export class AnnouncementService { | ||||
| 	@bindThis | ||||
| 	public async packMany( | ||||
| 		announcements: (MiAnnouncement & { isRead?: boolean | null })[], | ||||
| 		me?: { id: MiUser['id'] } | null | undefined, | ||||
| 		me: { id: MiUser['id'] } | null | undefined, | ||||
| 	): Promise<Packed<'Announcement'>[]> { | ||||
| 		return announcements.map(announcement => ({ | ||||
| 			id: announcement.id, | ||||
|   | ||||
| @@ -188,7 +188,7 @@ export class QueryService { | ||||
| 	} | ||||
|  | ||||
| 	@bindThis | ||||
| 	public generateVisibilityQuery(q: SelectQueryBuilder<any>, me?: { id: MiUser['id'] } | null): void { | ||||
| 	public generateVisibilityQuery(q: SelectQueryBuilder<any>, me: { id: MiUser['id'] } | null): void { | ||||
| 		// This code must always be synchronized with the checks in Notes.isVisibleForMe. | ||||
| 		if (me == null) { | ||||
| 			q.andWhere(new Brackets(qb => { | ||||
|   | ||||
| @@ -119,7 +119,7 @@ export class UserListService implements OnApplicationShutdown { | ||||
| 		}); | ||||
|  | ||||
| 		this.globalEventService.publishInternalEvent('userListMemberRemoved', { userListId: list.id, memberId: target.id }); | ||||
| 		this.globalEventService.publishUserListStream(list.id, 'userRemoved', await this.userEntityService.pack(target)); | ||||
| 		this.globalEventService.publishUserListStream(list.id, 'userRemoved', await this.userEntityService.pack(target, null)); | ||||
| 	} | ||||
|  | ||||
| 	@bindThis | ||||
|   | ||||
| @@ -25,7 +25,7 @@ export class AppEntityService { | ||||
| 	@bindThis | ||||
| 	public async pack( | ||||
| 		src: MiApp['id'] | MiApp, | ||||
| 		me?: { id: MiUser['id'] } | null | undefined, | ||||
| 		me: { id: MiUser['id'] } | null | undefined, | ||||
| 		options?: { | ||||
| 			detail?: boolean, | ||||
| 			includeSecret?: boolean, | ||||
|   | ||||
| @@ -25,7 +25,7 @@ export class AuthSessionEntityService { | ||||
| 	@bindThis | ||||
| 	public async pack( | ||||
| 		src: MiAuthSession['id'] | MiAuthSession, | ||||
| 		me?: { id: MiUser['id'] } | null | undefined, | ||||
| 		me: { id: MiUser['id'] } | null | undefined, | ||||
| 	) { | ||||
| 		const session = typeof src === 'object' ? src : await this.authSessionsRepository.findOneByOrFail({ id: src }); | ||||
|  | ||||
|   | ||||
| @@ -26,7 +26,7 @@ export class BlockingEntityService { | ||||
| 	@bindThis | ||||
| 	public async pack( | ||||
| 		src: MiBlocking['id'] | MiBlocking, | ||||
| 		me?: { id: MiUser['id'] } | null | undefined, | ||||
| 		me: { id: MiUser['id'] } | null | undefined, | ||||
| 	): Promise<Packed<'Blocking'>> { | ||||
| 		const blocking = typeof src === 'object' ? src : await this.blockingsRepository.findOneByOrFail({ id: src }); | ||||
|  | ||||
|   | ||||
| @@ -44,7 +44,7 @@ export class ChannelEntityService { | ||||
| 	@bindThis | ||||
| 	public async pack( | ||||
| 		src: MiChannel['id'] | MiChannel, | ||||
| 		me?: { id: MiUser['id'] } | null | undefined, | ||||
| 		me: { id: MiUser['id'] } | null | undefined, | ||||
| 		detailed?: boolean, | ||||
| 	): Promise<Packed<'Channel'>> { | ||||
| 		const channel = typeof src === 'object' ? src : await this.channelsRepository.findOneByOrFail({ id: src }); | ||||
|   | ||||
| @@ -29,7 +29,7 @@ export class ClipEntityService { | ||||
| 	@bindThis | ||||
| 	public async pack( | ||||
| 		src: MiClip['id'] | MiClip, | ||||
| 		me?: { id: MiUser['id'] } | null | undefined, | ||||
| 		me: { id: MiUser['id'] } | null | undefined, | ||||
| 	): Promise<Packed<'Clip'>> { | ||||
| 		const meId = me ? me.id : null; | ||||
| 		const clip = typeof src === 'object' ? src : await this.clipsRepository.findOneByOrFail({ id: src }); | ||||
| @@ -51,7 +51,7 @@ export class ClipEntityService { | ||||
| 	@bindThis | ||||
| 	public async packMany( | ||||
| 		clips: (MiClip['id'] | MiClip)[], | ||||
| 		me?: { id: MiUser['id'] } | null | undefined, | ||||
| 		me: { id: MiUser['id'] } | null | undefined, | ||||
| 	) : Promise<Packed<'Clip'>[]> { | ||||
| 		return (await Promise.allSettled(clips.map(x => this.pack(x, me)))) | ||||
| 			.filter(result => result.status === 'fulfilled') | ||||
|   | ||||
| @@ -30,7 +30,7 @@ export class FlashEntityService { | ||||
| 	@bindThis | ||||
| 	public async pack( | ||||
| 		src: MiFlash['id'] | MiFlash, | ||||
| 		me?: { id: MiUser['id'] } | null | undefined, | ||||
| 		me: { id: MiUser['id'] } | null | undefined, | ||||
| 	): Promise<Packed<'Flash'>> { | ||||
| 		const meId = me ? me.id : null; | ||||
| 		const flash = typeof src === 'object' ? src : await this.flashsRepository.findOneByOrFail({ id: src }); | ||||
| @@ -52,7 +52,7 @@ export class FlashEntityService { | ||||
| 	@bindThis | ||||
| 	public async packMany( | ||||
| 		flashs: MiFlash[], | ||||
| 		me?: { id: MiUser['id'] } | null | undefined, | ||||
| 		me: { id: MiUser['id'] } | null | undefined, | ||||
| 	) : Promise<Packed<'Flash'>[]> { | ||||
| 		return (await Promise.allSettled(flashs.map(x => this.pack(x, me)))) | ||||
| 			.filter(result => result.status === 'fulfilled') | ||||
|   | ||||
| @@ -26,7 +26,7 @@ export class FlashLikeEntityService { | ||||
| 	@bindThis | ||||
| 	public async pack( | ||||
| 		src: MiFlashLike['id'] | MiFlashLike, | ||||
| 		me?: { id: MiUser['id'] } | null | undefined, | ||||
| 		me: { id: MiUser['id'] } | null | undefined, | ||||
| 	) : Promise<Packed<'FlashLike'>> { | ||||
| 		const like = typeof src === 'object' ? src : await this.flashLikesRepository.findOneByOrFail({ id: src }); | ||||
|  | ||||
|   | ||||
| @@ -26,7 +26,7 @@ export class FollowRequestEntityService { | ||||
| 	@bindThis | ||||
| 	public async pack( | ||||
| 		src: MiFollowRequest['id'] | MiFollowRequest, | ||||
| 		me?: { id: MiUser['id'] } | null | undefined, | ||||
| 		me: { id: MiUser['id'] } | null | undefined, | ||||
| 	) : Promise<Packed<'FollowRequest'>> { | ||||
| 		const request = typeof src === 'object' ? src : await this.followRequestsRepository.findOneByOrFail({ id: src }); | ||||
|  | ||||
|   | ||||
| @@ -71,7 +71,7 @@ export class FollowingEntityService { | ||||
| 	@bindThis | ||||
| 	public async pack( | ||||
| 		src: MiFollowing['id'] | MiFollowing, | ||||
| 		me?: { id: MiUser['id'] } | null | undefined, | ||||
| 		me: { id: MiUser['id'] } | null | undefined, | ||||
| 		opts?: { | ||||
| 			populateFollowee?: boolean; | ||||
| 			populateFollower?: boolean; | ||||
| @@ -98,7 +98,7 @@ export class FollowingEntityService { | ||||
| 	@bindThis | ||||
| 	public async packMany( | ||||
| 		followings: (MiFollowing['id'] | MiFollowing)[], | ||||
| 		me?: { id: MiUser['id'] } | null | undefined, | ||||
| 		me: { id: MiUser['id'] } | null | undefined, | ||||
| 		opts?: { | ||||
| 			populateFollowee?: boolean; | ||||
| 			populateFollower?: boolean; | ||||
|   | ||||
| @@ -32,7 +32,7 @@ export class GalleryPostEntityService { | ||||
| 	@bindThis | ||||
| 	public async pack( | ||||
| 		src: MiGalleryPost['id'] | MiGalleryPost, | ||||
| 		me?: { id: MiUser['id'] } | null | undefined, | ||||
| 		me: { id: MiUser['id'] } | null | undefined, | ||||
| 	): Promise<Packed<'GalleryPost'>> { | ||||
| 		const meId = me ? me.id : null; | ||||
| 		const post = typeof src === 'object' ? src : await this.galleryPostsRepository.findOneByOrFail({ id: src }); | ||||
| @@ -58,7 +58,7 @@ export class GalleryPostEntityService { | ||||
| 	@bindThis | ||||
| 	public async packMany( | ||||
| 		posts: MiGalleryPost[], | ||||
| 		me?: { id: MiUser['id'] } | null | undefined, | ||||
| 		me: { id: MiUser['id'] } | null | undefined, | ||||
| 	) : Promise<Packed<'GalleryPost'>[]> { | ||||
| 		return (await Promise.allSettled(posts.map(x => this.pack(x, me)))) | ||||
| 			.filter(result => result.status === 'fulfilled') | ||||
|   | ||||
| @@ -26,7 +26,7 @@ export class InviteCodeEntityService { | ||||
| 	@bindThis | ||||
| 	public async pack( | ||||
| 		src: MiRegistrationTicket['id'] | MiRegistrationTicket, | ||||
| 		me?: { id: MiUser['id'] } | null | undefined, | ||||
| 		me: { id: MiUser['id'] } | null | undefined, | ||||
| 	): Promise<Packed<'InviteCode'>> { | ||||
| 		const target = typeof src === 'object' ? src : await this.registrationTicketsRepository.findOneOrFail({ | ||||
| 			where: { | ||||
|   | ||||
| @@ -27,7 +27,7 @@ export class MutingEntityService { | ||||
| 	@bindThis | ||||
| 	public async pack( | ||||
| 		src: MiMuting['id'] | MiMuting, | ||||
| 		me?: { id: MiUser['id'] } | null | undefined, | ||||
| 		me: { id: MiUser['id'] } | null | undefined, | ||||
| 	): Promise<Packed<'Muting'>> { | ||||
| 		const muting = typeof src === 'object' ? src : await this.mutingsRepository.findOneByOrFail({ id: src }); | ||||
|  | ||||
|   | ||||
| @@ -275,7 +275,7 @@ export class NoteEntityService implements OnModuleInit { | ||||
| 	@bindThis | ||||
| 	public async pack( | ||||
| 		src: MiNote['id'] | MiNote, | ||||
| 		me?: { id: MiUser['id'] } | null | undefined, | ||||
| 		me: { id: MiUser['id'] } | null | undefined, | ||||
| 		options?: { | ||||
| 			detail?: boolean; | ||||
| 			skipHide?: boolean; | ||||
| @@ -396,7 +396,7 @@ export class NoteEntityService implements OnModuleInit { | ||||
| 	@bindThis | ||||
| 	public async packMany( | ||||
| 		notes: MiNote[], | ||||
| 		me?: { id: MiUser['id'] } | null | undefined, | ||||
| 		me: { id: MiUser['id'] } | null | undefined, | ||||
| 		options?: { | ||||
| 			detail?: boolean; | ||||
| 			skipHide?: boolean; | ||||
|   | ||||
| @@ -26,7 +26,7 @@ export class NoteFavoriteEntityService { | ||||
| 	@bindThis | ||||
| 	public async pack( | ||||
| 		src: MiNoteFavorite['id'] | MiNoteFavorite, | ||||
| 		me?: { id: MiUser['id'] } | null | undefined, | ||||
| 		me: { id: MiUser['id'] } | null | undefined, | ||||
| 	) : Promise<Packed<'NoteFavorite'>> { | ||||
| 		const favorite = typeof src === 'object' ? src : await this.noteFavoritesRepository.findOneByOrFail({ id: src }); | ||||
|  | ||||
|   | ||||
| @@ -44,7 +44,7 @@ export class NoteReactionEntityService implements OnModuleInit { | ||||
| 	@bindThis | ||||
| 	public async pack( | ||||
| 		src: MiNoteReaction['id'] | MiNoteReaction, | ||||
| 		me?: { id: MiUser['id'] } | null | undefined, | ||||
| 		me: { id: MiUser['id'] } | null | undefined, | ||||
| 		options?: { | ||||
| 			withNote: boolean; | ||||
| 		}, | ||||
|   | ||||
| @@ -36,7 +36,7 @@ export class PageEntityService { | ||||
| 	@bindThis | ||||
| 	public async pack( | ||||
| 		src: MiPage['id'] | MiPage, | ||||
| 		me?: { id: MiUser['id'] } | null | undefined, | ||||
| 		me: { id: MiUser['id'] } | null | undefined, | ||||
| 	): Promise<Packed<'Page'>> { | ||||
| 		const meId = me ? me.id : null; | ||||
| 		const page = typeof src === 'object' ? src : await this.pagesRepository.findOneByOrFail({ id: src }); | ||||
| @@ -109,7 +109,7 @@ export class PageEntityService { | ||||
| 	@bindThis | ||||
| 	public async packMany( | ||||
| 		pages: (MiPage['id'] | MiPage)[], | ||||
| 		me?: { id: MiUser['id'] } | null | undefined, | ||||
| 		me: { id: MiUser['id'] } | null | undefined, | ||||
| 	) : Promise<Packed<'Page'>[]> { | ||||
| 		return (await Promise.allSettled(pages.map(x => this.pack(x, me)))) | ||||
| 			.filter(result => result.status === 'fulfilled') | ||||
|   | ||||
| @@ -26,7 +26,7 @@ export class PageLikeEntityService { | ||||
| 	@bindThis | ||||
| 	public async pack( | ||||
| 		src: MiPageLike['id'] | MiPageLike, | ||||
| 		me?: { id: MiUser['id'] } | null | undefined, | ||||
| 		me: { id: MiUser['id'] } | null | undefined, | ||||
| 	) : Promise<Packed<'PageLike'>> { | ||||
| 		const like = typeof src === 'object' ? src : await this.pageLikesRepository.findOneByOrFail({ id: src }); | ||||
|  | ||||
|   | ||||
| @@ -27,7 +27,7 @@ export class RenoteMutingEntityService { | ||||
| 	@bindThis | ||||
| 	public async pack( | ||||
| 		src: MiRenoteMuting['id'] | MiRenoteMuting, | ||||
| 		me?: { id: MiUser['id'] } | null | undefined, | ||||
| 		me: { id: MiUser['id'] } | null | undefined, | ||||
| 	): Promise<Packed<'RenoteMuting'>> { | ||||
| 		const muting = typeof src === 'object' ? src : await this.renoteMutingsRepository.findOneByOrFail({ id: src }); | ||||
|  | ||||
|   | ||||
| @@ -28,7 +28,7 @@ export class RoleEntityService { | ||||
| 	@bindThis | ||||
| 	public async pack( | ||||
| 		src: MiRole['id'] | MiRole, | ||||
| 		me?: { id: MiUser['id'] } | null | undefined, | ||||
| 		me: { id: MiUser['id'] } | null | undefined, | ||||
| 	) : Promise<Packed<'Role'>> { | ||||
| 		const role = typeof src === 'object' ? src : await this.rolesRepository.findOneByOrFail({ id: src }); | ||||
|  | ||||
|   | ||||
| @@ -289,7 +289,7 @@ export class UserEntityService implements OnModuleInit { | ||||
|  | ||||
| 	public async pack<ExpectsMe extends boolean | null = null, D extends boolean = false>( | ||||
| 		src: MiUser['id'] | MiUser, | ||||
| 		me?: { id: MiUser['id']; } | null | undefined, | ||||
| 		me: { id: MiUser['id']; } | null | undefined, | ||||
| 		options?: { | ||||
| 			detail?: D, | ||||
| 			includeSecrets?: boolean, | ||||
| @@ -494,7 +494,7 @@ export class UserEntityService implements OnModuleInit { | ||||
|  | ||||
| 	public async packMany<D extends boolean = false>( | ||||
| 		users: (MiUser['id'] | MiUser)[], | ||||
| 		me?: { id: MiUser['id'] } | null | undefined, | ||||
| 		me: { id: MiUser['id'] } | null | undefined, | ||||
| 		options?: { | ||||
| 			detail?: D, | ||||
| 			includeSecrets?: boolean, | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  | ||||
| import { Inject, Injectable } from '@nestjs/common'; | ||||
| import { DI } from '@/di-symbols.js'; | ||||
| import type { MiUserListMembership, UserListMembershipsRepository, UserListsRepository } from '@/models/_.js'; | ||||
| import type { MiUser, MiUserListMembership, UserListMembershipsRepository, UserListsRepository } from '@/models/_.js'; | ||||
| import type { Packed } from '@/misc/json-schema.js'; | ||||
| import type { } from '@/models/Blocking.js'; | ||||
| import type { MiUserList } from '@/models/UserList.js'; | ||||
| @@ -47,12 +47,13 @@ export class UserListEntityService { | ||||
| 	@bindThis | ||||
| 	public async packMembershipsMany( | ||||
| 		memberships: MiUserListMembership[], | ||||
| 		me: { id: MiUser['id']; } | null | undefined, | ||||
| 	) { | ||||
| 		return Promise.all(memberships.map(async x => ({ | ||||
| 			id: x.id, | ||||
| 			createdAt: x.createdAt.toISOString(), | ||||
| 			userId: x.userId, | ||||
| 			user: await this.userEntityService.pack(x.userId), | ||||
| 			user: await this.userEntityService.pack(x.userId, me), | ||||
| 			withReplies: x.withReplies, | ||||
| 		}))); | ||||
| 	} | ||||
|   | ||||
| @@ -56,7 +56,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { | ||||
| 				.limit(ps.limit) | ||||
| 				.getMany(); | ||||
|  | ||||
| 			return await this.flashEntityService.packMany(flashs); | ||||
| 			return await this.flashEntityService.packMany(flashs, me); | ||||
| 		}); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -73,7 +73,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { | ||||
| 				.limit(ps.limit) | ||||
| 				.getMany(); | ||||
|  | ||||
| 			return this.userListEntityService.packMembershipsMany(memberships); | ||||
| 			return this.userListEntityService.packMembershipsMany(memberships, me); | ||||
| 		}); | ||||
| 	} | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 riku6460
					riku6460