|
userStoryNameError: () => |
|
alertTemplates.oops( |
|
"Please enter a name for the user story. It should be between 1 and 100 characters.", |
|
), |
|
userStoryCreateError: () => |
|
alertTemplates.error("Failed to create user story. Please try again."), |
|
// #endregion |
|
// #region Backlog Items |
|
backlogItemNameError: () => |
|
alertTemplates.oops( |
|
"Please enter a name for the backlog item. It should be between 1 and 100 characters.", |
|
), |
|
backlogItemCreateError: () => |
|
alertTemplates.error("Failed to create backlog item. Please try again."), |
|
// #endregion |
|
// #region Issues |
|
issueNameError: () => |
|
alertTemplates.oops( |
|
"Please provide a name for the issue. It should be between 1 and 100 characters.", |
|
), |
|
issueStoryCreateError: () => |
|
alertTemplates.error("Failed to create issue. Please try again."), |
|
// #endregion |
|
// #region Epic |
|
epicNameError: () => |
|
alertTemplates.oops( |
|
"Please enter a name for the epic. It should be between 1 and 100 characters.", |
|
), |
|
// #endregion |
|
// #region Requirements |
|
requirementNameError: () => |
|
alertTemplates.oops( |
|
"Please enter a name for the requirement. It should be between 1 and 100 characters.", |
|
), |
|
requirementTypeError: () => |
|
alertTemplates.oops("Please select a type for the requirement."), |
|
// #endregion |
|
// #region Roles |
|
roleNameError: () => |
|
alertTemplates.oops( |
|
"Please enter a name for the role. It should be between 1 and 100 characters.", |
|
), |
|
ownerRoleError: () => |
|
alertTemplates.oops("You cannot edit the role of the owner."), |
|
assignedRoleError: (roleName: string) => |
|
alertTemplates.error( |
|
`You cannot delete the ${roleName} role because it is assigned to a user.`, |
|
), |
|
existingRoleError: (roleName: string) => |
|
alertTemplates.oops( |
|
`A role with the name "${roleName}" already exists. Please choose a different name.`, |
|
), |
|
// #endregion |
|
// #region Statuses |
|
statusNameNotEditableError: () => |
|
alertTemplates.oops( |
|
"You cannot edit nor delete the name of a default status. Please create a new status if you want to change it.", |
|
), |
|
statusNameError: () => |
|
alertTemplates.oops( |
|
"Please enter a name for the status. It should be between 1 and 100 characters.", |
|
), |
|
statusNameReservedError: (statusName?: string) => |
|
alertTemplates.oops( |
|
`The status name "${statusName}" is reserved for default statuses and cannot be created manually.`, |
|
), |
|
existingStatusError: (statusName: string) => |
|
alertTemplates.oops( |
|
`A status with the name "${statusName}" already exists. Please choose a different name.`, |
|
), |
|
// #endregion |
|
// #region Sprints |
|
sprintDatesError: () => |
|
alertTemplates.oops( |
|
"Please select valid start and end dates for the sprint.", |
|
), |
|
sprintDurationError: () => |
|
alertTemplates.oops("Sprint duration must be between 1 and 365 days."), |
|
sprintDateCollideError: (sprintNumber: number) => |
|
alertTemplates.oops( |
|
`The selected dates collide with Sprint ${sprintNumber}. Please choose different dates.`, |
|
), |
There are many places where they are not correctly implemented. Found a couple but all should be tested.
You can see this file, which includes lots of places where you can see size validations that must be there:
Tenor/tenor_web/src/app/_hooks/useAlert.tsx
Lines 180 to 261 in 0c65cfd
Role name example
Screen.Recording.2025-05-29.at.6.32.54.p.m.mov
Requirements example
Here it truncates the value after a certain amount, without notifying the user
Screen.Recording.2025-05-29.at.6.37.08.p.m.mov