wip
This commit is contained in:
		
							parent
							
								
									64bbfc2107
								
							
						
					
					
						commit
						47fae30aba
					
				|  | @ -7,6 +7,7 @@ import type { Blocking } from '@/models/entities/Blocking.js'; | |||
| import type { User } from '@/models/entities/User.js'; | ||||
| import { bindThis } from '@/decorators.js'; | ||||
| import { UserEntityService } from './UserEntityService.js'; | ||||
| import { Serialized } from 'schema-type'; | ||||
| 
 | ||||
| @Injectable() | ||||
| export class BlockingEntityService { | ||||
|  | @ -22,7 +23,7 @@ export class BlockingEntityService { | |||
| 	public async pack( | ||||
| 		src: Blocking['id'] | Blocking, | ||||
| 		me?: { id: User['id'] } | null | undefined, | ||||
| 	): Promise<Packed<'Blocking'>> { | ||||
| 	): Promise<Serialized<Packed<'Blocking'>>> { | ||||
| 		const blocking = typeof src === 'object' ? src : await this.blockingsRepository.findOneByOrFail({ id: src }); | ||||
| 
 | ||||
| 		return await awaitAll({ | ||||
|  | @ -39,7 +40,7 @@ export class BlockingEntityService { | |||
| 	public packMany( | ||||
| 		blockings: any[], | ||||
| 		me: { id: User['id'] }, | ||||
| 	) { | ||||
| 	): Promise<Serialized<Packed<'Blocking'>>[]> { | ||||
| 		return Promise.all(blockings.map(x => this.pack(x, me))); | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -8,56 +8,10 @@ import { DI } from '@/di-symbols.js'; | |||
| import { ApiError } from '../../error.js'; | ||||
| import { GetterService } from '@/server/api/GetterService.js'; | ||||
| 
 | ||||
| export const meta = { | ||||
| 	tags: ['account'], | ||||
| 
 | ||||
| 	limit: { | ||||
| 		duration: ms('1hour'), | ||||
| 		max: 100, | ||||
| 	}, | ||||
| 
 | ||||
| 	requireCredential: true, | ||||
| 
 | ||||
| 	kind: 'write:blocks', | ||||
| 
 | ||||
| 	errors: { | ||||
| 		noSuchUser: { | ||||
| 			message: 'No such user.', | ||||
| 			code: 'NO_SUCH_USER', | ||||
| 			id: '8621d8bf-c358-4303-a066-5ea78610eb3f', | ||||
| 		}, | ||||
| 
 | ||||
| 		blockeeIsYourself: { | ||||
| 			message: 'Blockee is yourself.', | ||||
| 			code: 'BLOCKEE_IS_YOURSELF', | ||||
| 			id: '06f6fac6-524b-473c-a354-e97a40ae6eac', | ||||
| 		}, | ||||
| 
 | ||||
| 		notBlocking: { | ||||
| 			message: 'You are not blocking that user.', | ||||
| 			code: 'NOT_BLOCKING', | ||||
| 			id: '291b2efa-60c6-45c0-9f6a-045c8f9b02cd', | ||||
| 		}, | ||||
| 	}, | ||||
| 
 | ||||
| 	res: { | ||||
| 		type: 'object', | ||||
| 		optional: false, nullable: false, | ||||
| 		ref: 'UserDetailedNotMe', | ||||
| 	}, | ||||
| } as const; | ||||
| 
 | ||||
| export const paramDef = { | ||||
| 	type: 'object', | ||||
| 	properties: { | ||||
| 		userId: { type: 'string', format: 'misskey:id' }, | ||||
| 	}, | ||||
| 	required: ['userId'], | ||||
| } as const; | ||||
| 
 | ||||
| // eslint-disable-next-line import/no-default-export
 | ||||
| @Injectable() | ||||
| export default class extends Endpoint<typeof meta, typeof paramDef> { | ||||
| export default class extends Endpoint<'blocking/delete'> { | ||||
| 	name = 'blocking/delete' as const; | ||||
| 	constructor( | ||||
| 		@Inject(DI.usersRepository) | ||||
| 		private usersRepository: UsersRepository, | ||||
|  | @ -69,17 +23,17 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { | |||
| 		private getterService: GetterService, | ||||
| 		private userBlockingService: UserBlockingService, | ||||
| 	) { | ||||
| 		super(meta, paramDef, async (ps, me) => { | ||||
| 		super(async (ps, me) => { | ||||
| 			const blocker = await this.usersRepository.findOneByOrFail({ id: me.id }); | ||||
| 
 | ||||
| 			// Check if the blockee is yourself
 | ||||
| 			if (me.id === ps.userId) { | ||||
| 				throw new ApiError(meta.errors.blockeeIsYourself); | ||||
| 				throw new ApiError(this.meta.errors.blockeeIsYourself); | ||||
| 			} | ||||
| 
 | ||||
| 			// Get blockee
 | ||||
| 			const blockee = await this.getterService.getUser(ps.userId).catch(err => { | ||||
| 				if (err.id === '15348ddd-432d-49c2-8a5a-8069753becff') throw new ApiError(meta.errors.noSuchUser); | ||||
| 				if (err.id === '15348ddd-432d-49c2-8a5a-8069753becff') throw new ApiError(this.meta.errors.noSuchUser); | ||||
| 				throw err; | ||||
| 			}); | ||||
| 
 | ||||
|  | @ -90,7 +44,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { | |||
| 			}); | ||||
| 
 | ||||
| 			if (exist == null) { | ||||
| 				throw new ApiError(meta.errors.notBlocking); | ||||
| 				throw new ApiError(this.meta.errors.notBlocking); | ||||
| 			} | ||||
| 
 | ||||
| 			// Delete blocking
 | ||||
|  |  | |||
|  | @ -5,37 +5,10 @@ import { QueryService } from '@/core/QueryService.js'; | |||
| import { BlockingEntityService } from '@/core/entities/BlockingEntityService.js'; | ||||
| import { DI } from '@/di-symbols.js'; | ||||
| 
 | ||||
| export const meta = { | ||||
| 	tags: ['account'], | ||||
| 
 | ||||
| 	requireCredential: true, | ||||
| 
 | ||||
| 	kind: 'read:blocks', | ||||
| 
 | ||||
| 	res: { | ||||
| 		type: 'array', | ||||
| 		optional: false, nullable: false, | ||||
| 		items: { | ||||
| 			type: 'object', | ||||
| 			optional: false, nullable: false, | ||||
| 			ref: 'Blocking', | ||||
| 		}, | ||||
| 	}, | ||||
| } as const; | ||||
| 
 | ||||
| export const paramDef = { | ||||
| 	type: 'object', | ||||
| 	properties: { | ||||
| 		limit: { type: 'integer', minimum: 1, maximum: 100, default: 30 }, | ||||
| 		sinceId: { type: 'string', format: 'misskey:id' }, | ||||
| 		untilId: { type: 'string', format: 'misskey:id' }, | ||||
| 	}, | ||||
| 	required: [], | ||||
| } as const; | ||||
| 
 | ||||
| // eslint-disable-next-line import/no-default-export
 | ||||
| @Injectable() | ||||
| export default class extends Endpoint<typeof meta, typeof paramDef> { | ||||
| export default class extends Endpoint<'blocking/list'> { | ||||
| 	name = 'blocking/list' as const; | ||||
| 	constructor( | ||||
| 		@Inject(DI.blockingsRepository) | ||||
| 		private blockingsRepository: BlockingsRepository, | ||||
|  | @ -43,7 +16,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { | |||
| 		private blockingEntityService: BlockingEntityService, | ||||
| 		private queryService: QueryService, | ||||
| 	) { | ||||
| 		super(meta, paramDef, async (ps, me) => { | ||||
| 		super(async (ps, me) => { | ||||
| 			const query = this.queryService.makePaginationQuery(this.blockingsRepository.createQueryBuilder('blocking'), ps.sinceId, ps.untilId) | ||||
| 				.andWhere('blocking.blockerId = :meId', { meId: me.id }); | ||||
| 
 | ||||
|  |  | |||
|  | @ -2522,6 +2522,76 @@ export const endpoints = { | |||
| 			}, | ||||
| 		}], | ||||
| 	}, | ||||
| 	'blocking/delete': { | ||||
| 		tags: ['account'], | ||||
| 	 | ||||
| 		limit: { | ||||
| 			duration: ms('1hour'), | ||||
| 			max: 100, | ||||
| 		}, | ||||
| 	 | ||||
| 		requireCredential: true, | ||||
| 	 | ||||
| 		kind: 'write:blocks', | ||||
| 	 | ||||
| 		errors: { | ||||
| 			noSuchUser: { | ||||
| 				message: 'No such user.', | ||||
| 				code: 'NO_SUCH_USER', | ||||
| 				id: '8621d8bf-c358-4303-a066-5ea78610eb3f', | ||||
| 			}, | ||||
| 	 | ||||
| 			blockeeIsYourself: { | ||||
| 				message: 'Blockee is yourself.', | ||||
| 				code: 'BLOCKEE_IS_YOURSELF', | ||||
| 				id: '06f6fac6-524b-473c-a354-e97a40ae6eac', | ||||
| 			}, | ||||
| 	 | ||||
| 			notBlocking: { | ||||
| 				message: 'You are not blocking that user.', | ||||
| 				code: 'NOT_BLOCKING', | ||||
| 				id: '291b2efa-60c6-45c0-9f6a-045c8f9b02cd', | ||||
| 			}, | ||||
| 		}, | ||||
| 
 | ||||
| 		defines: [{ | ||||
| 			req: { | ||||
| 				type: 'object', | ||||
| 				properties: { | ||||
| 					userId: { type: 'string', format: 'misskey:id' }, | ||||
| 				}, | ||||
| 				required: ['userId'], | ||||
| 			}, | ||||
| 			res: { | ||||
| 				$ref: 'https://misskey-hub.net/api/schemas/UserDetailedNotMe', | ||||
| 			}, | ||||
| 		}], | ||||
| 	}, | ||||
| 	'blocking/list': { | ||||
| 		tags: ['account'], | ||||
| 	 | ||||
| 		requireCredential: true, | ||||
| 	 | ||||
| 		kind: 'read:blocks', | ||||
| 
 | ||||
| 		defines: [{ | ||||
| 			req: { | ||||
| 				type: 'object', | ||||
| 				properties: { | ||||
| 					limit: { type: 'integer', minimum: 1, maximum: 100, default: 30 }, | ||||
| 					sinceId: { type: 'string', format: 'misskey:id' }, | ||||
| 					untilId: { type: 'string', format: 'misskey:id' }, | ||||
| 				}, | ||||
| 				required: [], | ||||
| 			}, | ||||
| 			res: { | ||||
| 				type: 'array', | ||||
| 				items: { | ||||
| 					$ref: 'https://misskey-hub.net/api/schemas/Blocking', | ||||
| 				}, | ||||
| 			}, | ||||
| 		}], | ||||
| 	}, | ||||
| 	//#endregion
 | ||||
| } as const satisfies { [x: string]: IEndpointMeta; }; | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue