[WEB-4281] chore: project error message updated (#7190)

* chore: project error message updated

* fix: error message for project creation

* fix: incorrect error code

* chore: code refactor

* chore: code refactor

---------

Co-authored-by: sangeethailango <sangeethailango21@gmail.com>
This commit is contained in:
Anmol Singh Bhatia
2025-06-16 17:19:44 +05:30
committed by GitHub
parent 2014400bed
commit 0983e5f44d
21 changed files with 65 additions and 14 deletions

View File

@@ -341,7 +341,10 @@ class ProjectViewSet(BaseViewSet):
except IntegrityError as e:
if "already exists" in str(e):
return Response(
{"name": "The project name is already taken"},
{
"name": "The project name is already taken",
"code": "PROJECT_NAME_ALREADY_EXIST",
},
status=status.HTTP_409_CONFLICT,
)
except Workspace.DoesNotExist:
@@ -350,7 +353,10 @@ class ProjectViewSet(BaseViewSet):
)
except serializers.ValidationError:
return Response(
{"identifier": "The project identifier is already taken"},
{
"identifier": "The project identifier is already taken",
"code": "PROJECT_IDENTIFIER_ALREADY_EXIST",
},
status=status.HTTP_409_CONFLICT,
)

View File

@@ -316,6 +316,8 @@
"failed_to_remove_project_from_favorites": "Nepodařilo se odstranit projekt z oblíbených. Zkuste to prosím znovu.",
"project_created_successfully": "Projekt úspěšně vytvořen",
"project_created_successfully_description": "Projekt byl úspěšně vytvořen. Nyní můžete začít přidávat pracovní položky.",
"project_name_already_taken": "Název projektu už je zabraný.",
"project_identifier_already_taken": "Identifikátor projektu už je zabraný.",
"project_cover_image_alt": "Úvodní obrázek projektu",
"name_is_required": "Název je povinný",
"title_should_be_less_than_255_characters": "Název by měl být kratší než 255 znaků",

View File

@@ -316,6 +316,8 @@
"failed_to_remove_project_from_favorites": "Projekt konnte nicht aus den Favoriten entfernt werden. Bitte versuchen Sie es erneut.",
"project_created_successfully": "Projekt erfolgreich erstellt",
"project_created_successfully_description": "Das Projekt wurde erfolgreich erstellt. Sie können nun Arbeitselemente hinzufügen.",
"project_name_already_taken": "Der Projektname ist bereits vergeben.",
"project_identifier_already_taken": "Der Projekt-Identifier ist bereits vergeben.",
"project_cover_image_alt": "Titelbild des Projekts",
"name_is_required": "Name ist erforderlich",
"title_should_be_less_than_255_characters": "Der Titel sollte weniger als 255 Zeichen enthalten",
@@ -2468,4 +2470,4 @@
"plane_didnt_start_up_this_could_be_because_one_or_more_plane_services_failed_to_start": "Plane ist nicht gestartet. Dies könnte daran liegen, dass einer oder mehrere Plane-Services nicht starten konnten.",
"choose_view_logs_from_setup_sh_and_docker_logs_to_be_sure": "Wählen Sie View Logs aus setup.sh und Docker-Logs, um sicherzugehen."
}
}
}

View File

@@ -153,6 +153,8 @@
"failed_to_remove_project_from_favorites": "Couldn't remove the project from favorites. Please try again.",
"project_created_successfully": "Project created successfully",
"project_created_successfully_description": "Project created successfully. You can now start adding work items to it.",
"project_name_already_taken": "The project name is already taken.",
"project_identifier_already_taken": "The project identifier is already taken.",
"project_cover_image_alt": "Project cover image",
"name_is_required": "Name is required",
"title_should_be_less_than_255_characters": "Title should be less than 255 characters",

View File

@@ -318,6 +318,8 @@
"failed_to_remove_project_from_favorites": "No se pudo eliminar el proyecto de favoritos. Por favor, inténtalo de nuevo.",
"project_created_successfully": "Proyecto creado exitosamente",
"project_created_successfully_description": "Proyecto creado exitosamente. Ahora puedes comenzar a agregar elementos de trabajo.",
"project_name_already_taken": "El nombre del proyecto ya está en uso.",
"project_identifier_already_taken": "El identificador del proyecto ya está en uso.",
"project_cover_image_alt": "Imagen de portada del proyecto",
"name_is_required": "El nombre es requerido",
"title_should_be_less_than_255_characters": "El título debe tener menos de 255 caracteres",

View File

@@ -316,6 +316,8 @@
"failed_to_remove_project_from_favorites": "Impossible de supprimer le projet des favoris. Veuillez réessayer.",
"project_created_successfully": "Projet créé avec succès",
"project_created_successfully_description": "Projet créé avec succès. Vous pouvez maintenant commencer à ajouter des éléments de travail.",
"project_name_already_taken": "Le nom du projet est déjà pris.",
"project_identifier_already_taken": "Lidentifiant du projet est déjà pris.",
"project_cover_image_alt": "Image de couverture du projet",
"name_is_required": "Le nom est requis",
"title_should_be_less_than_255_characters": "Le titre doit faire moins de 255 caractères",

View File

@@ -316,6 +316,8 @@
"failed_to_remove_project_from_favorites": "Tidak dapat menghapus proyek dari favorit. Silakan coba lagi.",
"project_created_successfully": "Proyek berhasil dibuat",
"project_created_successfully_description": "Proyek berhasil dibuat. Anda sekarang dapat mulai menambahkan item kerja ke dalamnya.",
"project_name_already_taken": "Nama proyek sudah digunakan",
"project_identifier_already_taken": "ID proyek sudah digunakan",
"project_cover_image_alt": "Gambar sampul proyek",
"name_is_required": "Nama diperlukan",
"title_should_be_less_than_255_characters": "Judul harus kurang dari 255 karakter",

View File

@@ -316,6 +316,8 @@
"failed_to_remove_project_from_favorites": "Impossibile rimuovere il progetto dai preferiti. Per favore, riprova.",
"project_created_successfully": "Progetto creato con successo",
"project_created_successfully_description": "Progetto creato con successo. Ora puoi iniziare ad aggiungere elementi di lavoro.",
"project_name_already_taken": "Il nome del progetto è già stato utilizzato.",
"project_identifier_already_taken": "L'identificatore del progetto è già stato utilizzato.",
"project_cover_image_alt": "Immagine di copertina del progetto",
"name_is_required": "Il nome è obbligatorio",
"title_should_be_less_than_255_characters": "Il titolo deve contenere meno di 255 caratteri",

View File

@@ -316,6 +316,8 @@
"failed_to_remove_project_from_favorites": "プロジェクトをお気に入りから削除できませんでした。もう一度お試しください。",
"project_created_successfully": "プロジェクトが正常に作成されました",
"project_created_successfully_description": "プロジェクトが正常に作成されました。作業項目を追加できるようになりました。",
"project_name_already_taken": "プロジェクト名は既に使用されています。",
"project_identifier_already_taken": "プロジェクト識別子は既に使用されています。",
"project_cover_image_alt": "プロジェクトのカバー画像",
"name_is_required": "名前は必須です",
"title_should_be_less_than_255_characters": "タイトルは255文字未満である必要があります",

View File

@@ -316,6 +316,8 @@
"failed_to_remove_project_from_favorites": "프로젝트를 즐겨찾기에서 제거하지 못했습니다. 다시 시도해주세요.",
"project_created_successfully": "프로젝트가 성공적으로 생성되었습니다",
"project_created_successfully_description": "프로젝트가 성공적으로 생성되었습니다. 이제 작업 항목을 추가할 수 있습니다.",
"project_name_already_taken": "프로젝트 이름이 이미 사용 중입니다.",
"project_identifier_already_taken": "프로젝트 식별자가 이미 사용 중입니다.",
"project_cover_image_alt": "프로젝트 커버 이미지",
"name_is_required": "이름이 필요합니다",
"title_should_be_less_than_255_characters": "제목은 255자 미만이어야 합니다",

View File

@@ -316,6 +316,8 @@
"failed_to_remove_project_from_favorites": "Nie udało się usunąć projektu z ulubionych. Spróbuj ponownie.",
"project_created_successfully": "Projekt utworzono pomyślnie",
"project_created_successfully_description": "Projekt został pomyślnie utworzony. Teraz możesz dodawać elementy pracy.",
"project_name_already_taken": "Nazwa projektu jest już zajęta.",
"project_identifier_already_taken": "Identyfikator projektu jest już zajęty.",
"project_cover_image_alt": "Obraz w tle projektu",
"name_is_required": "Nazwa jest wymagana",
"title_should_be_less_than_255_characters": "Nazwa musi mieć mniej niż 255 znaków",

View File

@@ -316,6 +316,8 @@
"failed_to_remove_project_from_favorites": "Não foi possível remover o projeto dos favoritos. Por favor, tente novamente.",
"project_created_successfully": "Projeto criado com sucesso",
"project_created_successfully_description": "Projeto criado com sucesso. Agora você pode começar a adicionar itens de trabalho a ele.",
"project_name_already_taken": "O nome do projeto já está em uso.",
"project_identifier_already_taken": "O identificador do projeto já está em uso.",
"project_cover_image_alt": "Imagem de capa do projeto",
"name_is_required": "Nome é obrigatório",
"title_should_be_less_than_255_characters": "O título deve ter menos de 255 caracteres",

View File

@@ -316,6 +316,8 @@
"failed_to_remove_project_from_favorites": "Nu s-a putut elimina proiectul din favorite. Încearcă din nou.",
"project_created_successfully": "Proiect creat cu succes",
"project_created_successfully_description": "Proiect creat cu succes. Poți începe să adaugi activități în el.",
"project_name_already_taken": "Numele proiectului este deja folosit.",
"project_identifier_already_taken": "Identificatorul proiectului este deja folosit.",
"project_cover_image_alt": "Coperta proiectului",
"name_is_required": "Numele este obligatoriu",
"title_should_be_less_than_255_characters": "Titlul trebuie să conțină mai puțin de 255 de caractere",

View File

@@ -316,6 +316,8 @@
"failed_to_remove_project_from_favorites": "Не удалось удалить проект из избранного. Попробуйте снова.",
"project_created_successfully": "Проект успешно создан",
"project_created_successfully_description": "Проект успешно создан. Теперь вы можете добавлять рабочие элементы.",
"project_name_already_taken": "Имя проекта уже используется.",
"project_identifier_already_taken": "Идентификатор проекта уже используется.",
"project_cover_image_alt": "Обложка проекта",
"name_is_required": "Требуется имя",
"title_should_be_less_than_255_characters": "Заголовок должен быть короче 255 символов",

View File

@@ -316,6 +316,8 @@
"failed_to_remove_project_from_favorites": "Nepodarilo sa odstrániť projekt z obľúbených. Skúste to prosím znova.",
"project_created_successfully": "Projekt bol úspešne vytvorený",
"project_created_successfully_description": "Projekt bol úspešne vytvorený. Teraz môžete začať pridávať pracovné položky.",
"project_name_already_taken": "Názov projektu je už použitý.",
"project_identifier_already_taken": "Identifikátor projektu je už použitý.",
"project_cover_image_alt": "Úvodný obrázok projektu",
"name_is_required": "Názov je povinný",
"title_should_be_less_than_255_characters": "Názov by mal byť kratší ako 255 znakov",

View File

@@ -316,6 +316,8 @@
"failed_to_remove_project_from_favorites": "Proje favorilerden kaldırılamadı. Lütfen tekrar deneyin.",
"project_created_successfully": "Proje başarıyla oluşturuldu",
"project_created_successfully_description": "Proje başarıyla oluşturuldu. Artık iş öğeleri eklemeye başlayabilirsiniz.",
"project_name_already_taken": "Proje ismi zaten kullanılıyor.",
"project_identifier_already_taken": "Proje kimliği zaten kullanılıyor.",
"project_cover_image_alt": "Proje kapak resmi",
"name_is_required": "Ad gereklidir",
"title_should_be_less_than_255_characters": "Başlık 255 karakterden az olmalı",

View File

@@ -316,6 +316,8 @@
"failed_to_remove_project_from_favorites": "Не вдалося видалити проєкт із вибраного. Спробуйте ще раз.",
"project_created_successfully": "Проєкт успішно створено",
"project_created_successfully_description": "Проєкт успішно створений. Тепер ви можете почати додавати робочі одиниці.",
"project_name_already_taken": "Назва проекту вже використовується.",
"project_identifier_already_taken": "Ідентифікатор проекту вже використовується.",
"project_cover_image_alt": "Обкладинка проєкту",
"name_is_required": "Назва є обов’язковою",
"title_should_be_less_than_255_characters": "Назва має бути коротшою за 255 символів",

View File

@@ -316,6 +316,8 @@
"failed_to_remove_project_from_favorites": "Không thể xóa dự án khỏi mục yêu thích. Vui lòng thử lại.",
"project_created_successfully": "Dự án đã được tạo thành công",
"project_created_successfully_description": "Dự án đã được tạo thành công. Bây giờ bạn có thể bắt đầu thêm mục công việc.",
"project_name_already_taken": "Tên dự án đã được sử dụng.",
"project_identifier_already_taken": "ID dự án đã được sử dụng.",
"project_cover_image_alt": "Ảnh bìa dự án",
"name_is_required": "Tên là bắt buộc",
"title_should_be_less_than_255_characters": "Tiêu đề phải ít hơn 255 ký tự",

View File

@@ -316,6 +316,8 @@
"failed_to_remove_project_from_favorites": "无法从收藏中移除项目。请重试。",
"project_created_successfully": "项目创建成功",
"project_created_successfully_description": "项目创建成功。您现在可以开始添加工作项了。",
"project_name_already_taken": "项目名称已被使用。",
"project_identifier_already_taken": "项目标识符已被使用。",
"project_cover_image_alt": "项目封面图片",
"name_is_required": "名称为必填项",
"title_should_be_less_than_255_characters": "标题应少于255个字符",

View File

@@ -316,6 +316,8 @@
"failed_to_remove_project_from_favorites": "無法從我的最愛移除專案。請再試一次。",
"project_created_successfully": "專案建立成功",
"project_created_successfully_description": "專案建立成功。您現在可以開始新增工作事項。",
"project_name_already_taken": "專案名稱已被使用。",
"project_identifier_already_taken": "專案識別碼已被使用。",
"project_cover_image_alt": "專案封面圖片",
"name_is_required": "名稱為必填",
"title_should_be_less_than_255_characters": "標題不應超過 255 個字元",

View File

@@ -49,7 +49,7 @@ export const CreateProjectForm: FC<TCreateProjectFormProps> = observer((props) =
addProjectToFavorites(workspaceSlug.toString(), projectId).catch(() => {
setToast({
type: TOAST_TYPE.ERROR,
title: t("error"),
title: t("toast.error"),
message: t("failed_to_remove_project_from_favorites"),
});
});
@@ -89,20 +89,27 @@ export const CreateProjectForm: FC<TCreateProjectFormProps> = observer((props) =
handleNextStep(res.id);
})
.catch((err) => {
Object.keys(err?.data ?? {}).map((key) => {
if (err?.data.code === "PROJECT_NAME_ALREADY_EXIST") {
setToast({
type: TOAST_TYPE.ERROR,
title: t("error"),
message: err.data[key],
title: t("toast.error"),
message: t("project_name_already_taken"),
});
captureProjectEvent({
eventName: PROJECT_CREATED,
payload: {
...formData,
state: "FAILED",
},
} else if (err?.data.code === "PROJECT_IDENTIFIER_ALREADY_EXIST") {
setToast({
type: TOAST_TYPE.ERROR,
title: t("toast.error"),
message: t("project_identifier_already_taken"),
});
});
} else {
Object.keys(err?.data ?? {}).map((key) => {
setToast({
type: TOAST_TYPE.ERROR,
title: t("error"),
message: err.data[key],
});
});
}
});
};