From d84b5834ac402dba574d65b407860f5a08e29a93 Mon Sep 17 00:00:00 2001 From: Kalle <38327916+Sendouc@users.noreply.github.com> Date: Thu, 9 Jul 2026 18:14:20 +0300 Subject: [PATCH] Fix and improve custom team member role form controls --- .../team/routes/t.$customUrl.roster.tsx | 2 +- app/features/team/team-schemas.ts | 19 ++----------------- locales/da/forms.json | 2 -- locales/de/forms.json | 2 -- locales/en/forms.json | 2 -- locales/es-ES/forms.json | 2 -- locales/es-US/forms.json | 2 -- locales/fr-CA/forms.json | 2 -- locales/fr-EU/forms.json | 2 -- locales/he/forms.json | 2 -- locales/it/forms.json | 2 -- locales/ja/forms.json | 2 -- locales/ko/forms.json | 2 -- locales/nl/forms.json | 2 -- locales/pl/forms.json | 2 -- locales/pt-BR/forms.json | 2 -- locales/ru/forms.json | 2 -- locales/zh/forms.json | 2 -- 18 files changed, 3 insertions(+), 50 deletions(-) diff --git a/app/features/team/routes/t.$customUrl.roster.tsx b/app/features/team/routes/t.$customUrl.roster.tsx index b06a33377..7be85a614 100644 --- a/app/features/team/routes/t.$customUrl.roster.tsx +++ b/app/features/team/routes/t.$customUrl.roster.tsx @@ -123,7 +123,7 @@ function MemberActions() { userId: member.id, role: member.customRole ? CUSTOM_ROLE_VALUE : (member.role ?? null), customRole: member.customRole ?? null, - roleType: member.roleType ?? null, + roleType: member.roleType ?? "PLAYER", isManager: Boolean(member.isManager), })), }} diff --git a/app/features/team/team-schemas.ts b/app/features/team/team-schemas.ts index 61b120448..8daf9caea 100644 --- a/app/features/team/team-schemas.ts +++ b/app/features/team/team-schemas.ts @@ -4,6 +4,7 @@ import { fieldset, idConstant, image, + select, selectOptional, stringConstant, textAreaOptional, @@ -90,7 +91,7 @@ export const updateRosterSchema = z label: "labels.teamMemberCustomRole", maxLength: CUSTOM_ROLE_MAX_LENGTH, }), - roleType: selectOptional({ + roleType: select({ label: "labels.teamMemberRoleType", items: [ { value: "PLAYER", label: "options.teamMemberRoleType.PLAYER" }, @@ -113,21 +114,5 @@ export const updateRosterSchema = z message: "forms:errors.customRoleRequired", }); } - - if (isCustom && !member.roleType) { - ctx.addIssue({ - code: z.ZodIssueCode.custom, - path: ["members", index, "roleType"], - message: "forms:errors.customRoleTypeRequired", - }); - } - - if (!isCustom && member.customRole) { - ctx.addIssue({ - code: z.ZodIssueCode.custom, - path: ["members", index, "customRole"], - message: "forms:errors.customRoleOnlyWhenCustom", - }); - } } }); diff --git a/locales/da/forms.json b/locales/da/forms.json index 27ed48568..49f20f051 100644 --- a/locales/da/forms.json +++ b/locales/da/forms.json @@ -65,8 +65,6 @@ "errors.duplicateOrgName": "", "errors.noOnlySpecialCharacters": "", "errors.customRoleRequired": "", - "errors.customRoleTypeRequired": "", - "errors.customRoleOnlyWhenCustom": "", "labels.weaponPool": "Våbenpulje", "placeholders.weaponPoolFull": "", "labels.voiceChat": "", diff --git a/locales/de/forms.json b/locales/de/forms.json index 429451db5..ba2cd3dde 100644 --- a/locales/de/forms.json +++ b/locales/de/forms.json @@ -65,8 +65,6 @@ "errors.duplicateOrgName": "", "errors.noOnlySpecialCharacters": "", "errors.customRoleRequired": "", - "errors.customRoleTypeRequired": "", - "errors.customRoleOnlyWhenCustom": "", "labels.weaponPool": "Waffenpool", "placeholders.weaponPoolFull": "", "labels.voiceChat": "", diff --git a/locales/en/forms.json b/locales/en/forms.json index 67722c9aa..c56a23593 100644 --- a/locales/en/forms.json +++ b/locales/en/forms.json @@ -65,8 +65,6 @@ "errors.duplicateOrgName": "There is already an organization with this name", "errors.noOnlySpecialCharacters": "Name can't be only special characters", "errors.customRoleRequired": "Enter a name for the custom role", - "errors.customRoleTypeRequired": "Select a role type for the custom role", - "errors.customRoleOnlyWhenCustom": "Custom role is only allowed when the role is set to Custom", "labels.weaponPool": "Weapon pool", "placeholders.weaponPoolFull": "Pool full - remove a weapon to add more", "labels.voiceChat": "Can voice chat", diff --git a/locales/es-ES/forms.json b/locales/es-ES/forms.json index d461fc166..e7067bad1 100644 --- a/locales/es-ES/forms.json +++ b/locales/es-ES/forms.json @@ -65,8 +65,6 @@ "errors.duplicateOrgName": "", "errors.noOnlySpecialCharacters": "El nombre no puede ser solo caracteres especiales", "errors.customRoleRequired": "", - "errors.customRoleTypeRequired": "", - "errors.customRoleOnlyWhenCustom": "", "labels.weaponPool": "Selección de armas", "placeholders.weaponPoolFull": "Selección llena - elimina un arma para añadir más", "labels.voiceChat": "Puede usar chat de voz", diff --git a/locales/es-US/forms.json b/locales/es-US/forms.json index c3533603c..da96c8f39 100644 --- a/locales/es-US/forms.json +++ b/locales/es-US/forms.json @@ -65,8 +65,6 @@ "errors.duplicateOrgName": "", "errors.noOnlySpecialCharacters": "", "errors.customRoleRequired": "", - "errors.customRoleTypeRequired": "", - "errors.customRoleOnlyWhenCustom": "", "labels.weaponPool": "Grupo de armas", "placeholders.weaponPoolFull": "", "labels.voiceChat": "", diff --git a/locales/fr-CA/forms.json b/locales/fr-CA/forms.json index 0ab0cb656..a637911fd 100644 --- a/locales/fr-CA/forms.json +++ b/locales/fr-CA/forms.json @@ -65,8 +65,6 @@ "errors.duplicateOrgName": "", "errors.noOnlySpecialCharacters": "", "errors.customRoleRequired": "", - "errors.customRoleTypeRequired": "", - "errors.customRoleOnlyWhenCustom": "", "labels.weaponPool": "Armes jouées", "placeholders.weaponPoolFull": "", "labels.voiceChat": "", diff --git a/locales/fr-EU/forms.json b/locales/fr-EU/forms.json index 96ce7c383..780d3f493 100644 --- a/locales/fr-EU/forms.json +++ b/locales/fr-EU/forms.json @@ -65,8 +65,6 @@ "errors.duplicateOrgName": "", "errors.noOnlySpecialCharacters": "", "errors.customRoleRequired": "", - "errors.customRoleTypeRequired": "", - "errors.customRoleOnlyWhenCustom": "", "labels.weaponPool": "Armes jouées", "placeholders.weaponPoolFull": "", "labels.voiceChat": "", diff --git a/locales/he/forms.json b/locales/he/forms.json index 16f7ba49a..7bb221243 100644 --- a/locales/he/forms.json +++ b/locales/he/forms.json @@ -65,8 +65,6 @@ "errors.duplicateOrgName": "", "errors.noOnlySpecialCharacters": "", "errors.customRoleRequired": "", - "errors.customRoleTypeRequired": "", - "errors.customRoleOnlyWhenCustom": "", "labels.weaponPool": "מאגר נשקים", "placeholders.weaponPoolFull": "", "labels.voiceChat": "", diff --git a/locales/it/forms.json b/locales/it/forms.json index 9d0fa7dfc..f2940e0ff 100644 --- a/locales/it/forms.json +++ b/locales/it/forms.json @@ -65,8 +65,6 @@ "errors.duplicateOrgName": "", "errors.noOnlySpecialCharacters": "", "errors.customRoleRequired": "", - "errors.customRoleTypeRequired": "", - "errors.customRoleOnlyWhenCustom": "", "labels.weaponPool": "Pool armi", "placeholders.weaponPoolFull": "", "labels.voiceChat": "", diff --git a/locales/ja/forms.json b/locales/ja/forms.json index 3c1f54440..cb120d585 100644 --- a/locales/ja/forms.json +++ b/locales/ja/forms.json @@ -65,8 +65,6 @@ "errors.duplicateOrgName": "", "errors.noOnlySpecialCharacters": "", "errors.customRoleRequired": "", - "errors.customRoleTypeRequired": "", - "errors.customRoleOnlyWhenCustom": "", "labels.weaponPool": "使用ブキ", "placeholders.weaponPoolFull": "", "labels.voiceChat": "", diff --git a/locales/ko/forms.json b/locales/ko/forms.json index e6280d3dc..01c9cc160 100644 --- a/locales/ko/forms.json +++ b/locales/ko/forms.json @@ -65,8 +65,6 @@ "errors.duplicateOrgName": "", "errors.noOnlySpecialCharacters": "", "errors.customRoleRequired": "", - "errors.customRoleTypeRequired": "", - "errors.customRoleOnlyWhenCustom": "", "labels.weaponPool": "", "placeholders.weaponPoolFull": "", "labels.voiceChat": "", diff --git a/locales/nl/forms.json b/locales/nl/forms.json index d1eada56a..dff99af00 100644 --- a/locales/nl/forms.json +++ b/locales/nl/forms.json @@ -65,8 +65,6 @@ "errors.duplicateOrgName": "", "errors.noOnlySpecialCharacters": "", "errors.customRoleRequired": "", - "errors.customRoleTypeRequired": "", - "errors.customRoleOnlyWhenCustom": "", "labels.weaponPool": "", "placeholders.weaponPoolFull": "", "labels.voiceChat": "", diff --git a/locales/pl/forms.json b/locales/pl/forms.json index 54d13198e..6d0075125 100644 --- a/locales/pl/forms.json +++ b/locales/pl/forms.json @@ -65,8 +65,6 @@ "errors.duplicateOrgName": "", "errors.noOnlySpecialCharacters": "", "errors.customRoleRequired": "", - "errors.customRoleTypeRequired": "", - "errors.customRoleOnlyWhenCustom": "", "labels.weaponPool": "Pula broni", "placeholders.weaponPoolFull": "", "labels.voiceChat": "", diff --git a/locales/pt-BR/forms.json b/locales/pt-BR/forms.json index 74fa87dc2..69dcc5fb3 100644 --- a/locales/pt-BR/forms.json +++ b/locales/pt-BR/forms.json @@ -65,8 +65,6 @@ "errors.duplicateOrgName": "", "errors.noOnlySpecialCharacters": "", "errors.customRoleRequired": "", - "errors.customRoleTypeRequired": "", - "errors.customRoleOnlyWhenCustom": "", "labels.weaponPool": "Seleção de armas", "placeholders.weaponPoolFull": "", "labels.voiceChat": "", diff --git a/locales/ru/forms.json b/locales/ru/forms.json index 0a632ed06..c251760b9 100644 --- a/locales/ru/forms.json +++ b/locales/ru/forms.json @@ -65,8 +65,6 @@ "errors.duplicateOrgName": "", "errors.noOnlySpecialCharacters": "", "errors.customRoleRequired": "", - "errors.customRoleTypeRequired": "", - "errors.customRoleOnlyWhenCustom": "", "labels.weaponPool": "Используемое оружие", "placeholders.weaponPoolFull": "", "labels.voiceChat": "", diff --git a/locales/zh/forms.json b/locales/zh/forms.json index 7e17154a7..23d0448c7 100644 --- a/locales/zh/forms.json +++ b/locales/zh/forms.json @@ -65,8 +65,6 @@ "errors.duplicateOrgName": "该组织名称已被占用", "errors.noOnlySpecialCharacters": "名称不能仅由特殊字符组成", "errors.customRoleRequired": "请输入自定义职责的名称", - "errors.customRoleTypeRequired": "请选择自定义职责的类型", - "errors.customRoleOnlyWhenCustom": "仅当职责设为“自定义”时,才允许配置自定义职责", "labels.weaponPool": "武器池", "placeholders.weaponPoolFull": "武器池已满。请移除一个武器以添加新武器", "labels.voiceChat": "可以进行语音聊天吗?",