diff --git a/gradle/changelog/tag_exists_error.yaml b/gradle/changelog/tag_exists_error.yaml new file mode 100644 index 0000000000..abebc8a04d --- /dev/null +++ b/gradle/changelog/tag_exists_error.yaml @@ -0,0 +1,2 @@ +- type: fixed + description: Short display of "tag already exists" error message when creating a new tag diff --git a/scm-ui/ui-webapp/src/repos/components/changesets/CreateTagModal.tsx b/scm-ui/ui-webapp/src/repos/components/changesets/CreateTagModal.tsx index d8d9663248..33496346df 100644 --- a/scm-ui/ui-webapp/src/repos/components/changesets/CreateTagModal.tsx +++ b/scm-ui/ui-webapp/src/repos/components/changesets/CreateTagModal.tsx @@ -29,10 +29,12 @@ type Props = { const CreateTagModal: FC = ({ repository, changeset, onClose }) => { const { isLoading, error, data: tags } = useTags(repository); - const { isLoading: isLoadingCreate, error: errorCreate, create, tag: createdTag } = useCreateTag( - repository, - changeset - ); + const { + isLoading: isLoadingCreate, + error: errorCreate, + create, + tag: createdTag, + } = useCreateTag(repository, changeset); const [t] = useTranslation("repos"); const [newTagName, setNewTagName] = useState(""); const initialFocusRef = useRef(null); @@ -43,12 +45,12 @@ const CreateTagModal: FC = ({ repository, changeset, onClose }) => { } }, [createdTag, onClose]); - const tagNames = tags?._embedded?.tags.map(tag => tag.name); + const tagNames = tags?._embedded?.tags.map((tag) => tag.name); let validationError = ""; if (tagNames !== undefined && newTagName !== "") { - if (tagNames.includes(newTagName)) { + if (!isLoadingCreate && tagNames.includes(newTagName)) { validationError = "tags.create.form.field.name.error.exists"; } else if (!validation.isBranchValid(newTagName)) { validationError = "tags.create.form.field.name.error.format"; @@ -68,7 +70,7 @@ const CreateTagModal: FC = ({ repository, changeset, onClose }) => { setNewTagName(event.target.value)} + onChange={(event) => setNewTagName(event.target.value)} value={newTagName} validationError={!!validationError} errorMessage={t(validationError)}