Skip to content

Commit

Permalink
fix(FOROME-1313): validation for creating presets (#799)
Browse files Browse the repository at this point in the history
* fix(FOROME-1313): validation for creating presets

* fix(FOROME-1313): get rid of useless hook
  • Loading branch information
EvgeniySobolev authored Jul 13, 2022
1 parent 34b08b4 commit 2b23011
Showing 1 changed file with 22 additions and 13 deletions.
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import { ReactElement, useEffect, useMemo, useState } from 'react'
import { ReactElement, useEffect, useState } from 'react'

import { t } from '@i18n'
import { Dialog } from '@ui/dialog'
import { Input } from '@ui/input'
import { ISolutionEntryDescription } from '@service-providers/common'
import { validatePresetName } from '@utils/validation/validatePresetName'

interface ISolutionCreateDialogProps {
solutions: ISolutionEntryDescription[] | undefined
Expand All @@ -21,23 +22,36 @@ export const SolutionCreateDialog = ({
onCreate,
}: ISolutionCreateDialogProps): ReactElement => {
const [solutionName, setSolutionName] = useState('')
const [isValidationError, setIsValidationError] = useState(false)
const [isSameNameError, setIsSameNameError] = useState(false)

const error = useMemo(
() => solutions?.some(solution => solution.name === solutionName),
[solutionName, solutions],
)
const hasError = isValidationError || isSameNameError
const errorText = isValidationError
? t('filter.notValidName')
: t('solutionControl.createDialog.solutionNameAlreadyExists', {
controlName,
solutionName,
})

useEffect(() => {
!isOpen && setSolutionName('')
}, [isOpen])

useEffect(() => {
const isValid = !solutionName.length || validatePresetName(solutionName)
setIsValidationError(!isValid)
setIsSameNameError(
!!solutions?.some(solution => solution.name === solutionName),
)
}, [solutionName, solutions])

return (
<Dialog
isOpen={isOpen}
onClose={onClose}
title={t('solutionControl.createDialog.title', { controlName })}
applyText={t('general.create')}
isApplyDisabled={error || !solutionName}
isApplyDisabled={hasError || !solutionName}
onApply={() => onCreate(solutionName)}
>
<Input
Expand All @@ -48,13 +62,8 @@ export const SolutionCreateDialog = ({
})}
onChange={event => setSolutionName(event.target.value)}
/>
{error && (
<div className="text-red-secondary text-12">
{t('solutionControl.createDialog.solutionNameAlreadyExists', {
controlName,
solutionName,
})}
</div>
{hasError && (
<div className="text-red-secondary text-12">{errorText}</div>
)}
</Dialog>
)
Expand Down

0 comments on commit 2b23011

Please sign in to comment.