diff --git a/apps/web/core/components/labels/create-update-label-inline.tsx b/apps/web/core/components/labels/create-update-label-inline.tsx index e391ac4ea..8f5683711 100644 --- a/apps/web/core/components/labels/create-update-label-inline.tsx +++ b/apps/web/core/components/labels/create-update-label-inline.tsx @@ -13,6 +13,11 @@ import type { IIssueLabel } from "@plane/types"; import { Input } from "@plane/ui"; import { captureError, captureSuccess } from "@/helpers/event-tracker.helper"; +// error codes +const errorCodes = { + LABEL_NAME_ALREADY_EXISTS: "LABEL_NAME_ALREADY_EXISTS", +}; + export type TLabelOperationsCallbacks = { createLabel: (data: Partial) => Promise; updateLabel: (labelId: string, data: Partial) => Promise; @@ -59,6 +64,23 @@ export const CreateUpdateLabelInline = observer( if (onClose) onClose(); }; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const getErrorMessage = (error: any, operation: "create" | "update"): string => { + const errorData = error ?? {}; + + const labelError = errorData.name?.includes(errorCodes.LABEL_NAME_ALREADY_EXISTS); + if (labelError) { + return t("label.create.already_exists"); + } + + // Fallback to general error messages + if (operation === "create") { + return errorData?.detail ?? errorData?.error ?? t("common.something_went_wrong"); + } + + return errorData?.error ?? t("project_settings.labels.toast.error"); + }; + const handleLabelCreate: SubmitHandler = async (formData) => { if (isSubmitting) return; @@ -83,10 +105,12 @@ export const CreateUpdateLabelInline = observer( }, error, }); + + const errorMessage = getErrorMessage(error, "create"); setToast({ title: "Error!", type: TOAST_TYPE.ERROR, - message: error?.detail ?? error.error ?? t("common.something_went_wrong"), + message: errorMessage, }); reset(formData); }); @@ -117,10 +141,11 @@ export const CreateUpdateLabelInline = observer( }, error, }); + const errorMessage = getErrorMessage(error, "update"); setToast({ title: "Oops!", type: TOAST_TYPE.ERROR, - message: error?.error ?? t("project_settings.labels.toast.error"), + message: errorMessage, }); reset(formData); });