From e1520479126a5ca79012a49e4b1a6872f1dc481a Mon Sep 17 00:00:00 2001
From: nenohi <kimutipartylove@gmail.com>
Date: Mon, 20 Mar 2023 14:24:18 +0900
Subject: [PATCH] =?UTF-8?q?=E7=B5=B5=E6=96=87=E5=AD=97=E3=81=AE=E5=90=8D?=
 =?UTF-8?q?=E5=89=8D=E3=81=AB@=E3=82=84:=E3=81=8C=E4=BD=BF=E7=94=A8?=
 =?UTF-8?q?=E3=81=A7=E3=81=8D=E3=82=8B=20(#9964)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* fix(#9918)名前の一致でもエラーとするように

* 判定を逆に

* )の位置間違えてる

* カテゴリ分けとかしたときにエラーになる

* エラー消し

* こういうこと・・・?
---
 .../src/server/api/endpoints/admin/emoji/update.ts    | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/update.ts b/packages/backend/src/server/api/endpoints/admin/emoji/update.ts
index dad0e3ef86..1c649db93e 100644
--- a/packages/backend/src/server/api/endpoints/admin/emoji/update.ts
+++ b/packages/backend/src/server/api/endpoints/admin/emoji/update.ts
@@ -19,6 +19,11 @@ export const meta = {
 			code: 'NO_SUCH_EMOJI',
 			id: '684dec9d-a8c2-4364-9aa8-456c49cb1dc8',
 		},
+		alreadyexistsemoji: {
+			message: 'Emoji already exists',
+			code: 'EMOJI_ALREADY_EXISTS',
+			id: '7180fe9d-1ee3-bff9-647d-fe9896d2ffb8',
+		},
 	},
 } as const;
 
@@ -26,7 +31,7 @@ export const paramDef = {
 	type: 'object',
 	properties: {
 		id: { type: 'string', format: 'misskey:id' },
-		name: { type: 'string' },
+		name: { type: 'string', pattern: '^[a-zA-Z0-9_]+$' },
 		category: {
 			type: 'string',
 			nullable: true,
@@ -57,9 +62,9 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
 	) {
 		super(meta, paramDef, async (ps, me) => {
 			const emoji = await this.emojisRepository.findOneBy({ id: ps.id });
-
+			const emojiname = await this.emojisRepository.findOneBy({ name: ps.name });
 			if (emoji == null) throw new ApiError(meta.errors.noSuchEmoji);
-
+			if (emojiname != null && emojiname.id !== ps.id) throw new ApiError(meta.errors.alreadyexistsemoji);
 			await this.emojisRepository.update(emoji.id, {
 				updatedAt: new Date(),
 				name: ps.name,