From ebd2704e682bd482fe92ddef4867c374b27ff5a3 Mon Sep 17 00:00:00 2001 From: skinmaker1345 Date: Sun, 17 Aug 2025 22:06:13 +0900 Subject: [PATCH] feat: add none to enforcement entries --- pages/addbot.tsx | 32 +++++++++++++++++++++----------- pages/bots/[id]/edit.tsx | 32 +++++++++++++++++++++----------- utils/Constants.ts | 4 ++++ utils/Query.ts | 4 ++-- 4 files changed, 48 insertions(+), 24 deletions(-) diff --git a/pages/addbot.tsx b/pages/addbot.tsx index beb642d..efe2b01 100644 --- a/pages/addbot.tsx +++ b/pages/addbot.tsx @@ -367,20 +367,30 @@ const AddBot: NextPage = ({ logged, user, csrfToken, theme }) => { } > ({ - label: v.label, - value: k, - }))} - handleChange={(value) => { - setFieldValue( - 'enforcements', - value.map((v) => v.value) - ) + options={Object.entries(botEnforcements) + .filter(([k, v]) => k === 'NONE' || !values.enforcements.includes('NONE')) + .map(([k, v]) => ({ + label: v.label, + value: k, + }))} + handleChange={(values) => { + if (values.some((i) => i.value === 'NONE')) { + setFieldValue('enforcements', ['NONE']) + } else { + setFieldValue( + 'enforcements', + values.map((v) => v.value) + ) + } }} handleTouch={() => setFieldTouched('enforcements', true)} values={values.enforcements ?? ([] as string[])} - setValues={(value) => { - setFieldValue('enforcements', value) + setValues={(values) => { + if (values.includes('NONE')) { + setFieldValue('enforcements', ['NONE']) + } else { + setFieldValue('enforcements', values) + } }} /> diff --git a/pages/bots/[id]/edit.tsx b/pages/bots/[id]/edit.tsx index 4dbf03b..5736074 100644 --- a/pages/bots/[id]/edit.tsx +++ b/pages/bots/[id]/edit.tsx @@ -339,20 +339,30 @@ const ManageBotPage: NextPage = ({ bot, user, csrfToken, theme } } > ({ - label: v.label, - value: k, - }))} - handleChange={(value) => { - setFieldValue( - 'enforcements', - value.map((v) => v.value) - ) + options={Object.entries(botEnforcements) + .filter(([k, v]) => k === 'NONE' || !values.enforcements.includes('NONE')) + .map(([k, v]) => ({ + label: v.label, + value: k, + }))} + handleChange={(values) => { + if (values.some((i) => i.value === 'NONE')) { + setFieldValue('enforcements', ['NONE']) + } else { + setFieldValue( + 'enforcements', + values.map((v) => v.value) + ) + } }} handleTouch={() => setFieldTouched('enforcements', true)} values={values.enforcements ?? ([] as string[])} - setValues={(value) => { - setFieldValue('enforcements', value) + setValues={(values) => { + if (values.includes('NONE')) { + setFieldValue('enforcements', ['NONE']) + } else { + setFieldValue('enforcements', values) + } }} /> diff --git a/utils/Constants.ts b/utils/Constants.ts index fbda298..ac7db24 100644 --- a/utils/Constants.ts +++ b/utils/Constants.ts @@ -121,6 +121,10 @@ export const botCategoryDescription = { } export const botEnforcements = { + NONE: { + label: '해당사항이 없습니다.', + description: '', + }, JOIN_PARTIALLY_ENFORCED: { label: '서버 참여가 필요한 기능이 있습니다', description: '봇의 일부 명령어는 봇의 디스코드 서버에 참여해야 사용할 수 있습니다.', diff --git a/utils/Query.ts b/utils/Query.ts index ce26ab4..09f82f2 100644 --- a/utils/Query.ts +++ b/utils/Query.ts @@ -641,7 +641,7 @@ async function submitBot( git: data.git, url: data.url, category: JSON.stringify(data.category), - enforcements: JSON.stringify(data.enforcements), + enforcements: JSON.stringify(data.enforcements.filter((el) => el !== 'NONE')), discord: data.discord, state: 0, }) @@ -751,7 +751,7 @@ async function updateBot(id: string, data: ManageBot): Promise { intro: data.intro, desc: data.desc, vanity: data.vanity, - enforcements: JSON.stringify(data.enforcements), + enforcements: JSON.stringify(data.enforcements.filter((el) => el !== 'NONE')), banner: data.banner, bg: data.bg, })