Skip to content

Commit 0bc45e3

Browse files
[WEB-5503] fix: enhance error handling for label creation and update operations (#8175)
* fix: enhance error handling for label creation and update operations * fix: improve error handling for label creation and update operations * refactor: change error codes from enum to object for label operations * refactor: update error code references in label handling to use consistent naming * fix: improve error handling for label creation and update
1 parent cacd1b4 commit 0bc45e3

File tree

1 file changed

+27
-2
lines changed

1 file changed

+27
-2
lines changed

apps/web/core/components/labels/create-update-label-inline.tsx

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,11 @@ import type { IIssueLabel } from "@plane/types";
1313
import { Input } from "@plane/ui";
1414
import { captureError, captureSuccess } from "@/helpers/event-tracker.helper";
1515

16+
// error codes
17+
const errorCodes = {
18+
LABEL_NAME_ALREADY_EXISTS: "LABEL_NAME_ALREADY_EXISTS",
19+
};
20+
1621
export type TLabelOperationsCallbacks = {
1722
createLabel: (data: Partial<IIssueLabel>) => Promise<IIssueLabel>;
1823
updateLabel: (labelId: string, data: Partial<IIssueLabel>) => Promise<IIssueLabel>;
@@ -59,6 +64,23 @@ export const CreateUpdateLabelInline = observer(
5964
if (onClose) onClose();
6065
};
6166

67+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
68+
const getErrorMessage = (error: any, operation: "create" | "update"): string => {
69+
const errorData = error ?? {};
70+
71+
const labelError = errorData.name?.includes(errorCodes.LABEL_NAME_ALREADY_EXISTS);
72+
if (labelError) {
73+
return t("label.create.already_exists");
74+
}
75+
76+
// Fallback to general error messages
77+
if (operation === "create") {
78+
return errorData?.detail ?? errorData?.error ?? t("common.something_went_wrong");
79+
}
80+
81+
return errorData?.error ?? t("project_settings.labels.toast.error");
82+
};
83+
6284
const handleLabelCreate: SubmitHandler<IIssueLabel> = async (formData) => {
6385
if (isSubmitting) return;
6486

@@ -83,10 +105,12 @@ export const CreateUpdateLabelInline = observer(
83105
},
84106
error,
85107
});
108+
109+
const errorMessage = getErrorMessage(error, "create");
86110
setToast({
87111
title: "Error!",
88112
type: TOAST_TYPE.ERROR,
89-
message: error?.detail ?? error.error ?? t("common.something_went_wrong"),
113+
message: errorMessage,
90114
});
91115
reset(formData);
92116
});
@@ -117,10 +141,11 @@ export const CreateUpdateLabelInline = observer(
117141
},
118142
error,
119143
});
144+
const errorMessage = getErrorMessage(error, "update");
120145
setToast({
121146
title: "Oops!",
122147
type: TOAST_TYPE.ERROR,
123-
message: error?.error ?? t("project_settings.labels.toast.error"),
148+
message: errorMessage,
124149
});
125150
reset(formData);
126151
});

0 commit comments

Comments
 (0)