fix: advanced requirements list and prohibit duplicate overrides
This commit is contained in:
parent
abbcda793b
commit
19e9f54fab
2 changed files with 53 additions and 18 deletions
|
|
@ -9,7 +9,7 @@ import { fromNamespace, toNamespace, namespaces } from 'src/utils/config'
|
||||||
|
|
||||||
import {
|
import {
|
||||||
defaultSchema,
|
defaultSchema,
|
||||||
overridesSchema,
|
getOverridesSchema,
|
||||||
defaults,
|
defaults,
|
||||||
overridesDefaults,
|
overridesDefaults,
|
||||||
getDefaultSettings,
|
getDefaultSettings,
|
||||||
|
|
@ -95,7 +95,7 @@ const AdvancedTriggersSettings = memo(() => {
|
||||||
enableCreate
|
enableCreate
|
||||||
initialValues={overridesDefaults}
|
initialValues={overridesDefaults}
|
||||||
save={saveOverrides}
|
save={saveOverrides}
|
||||||
validationSchema={overridesSchema}
|
validationSchema={getOverridesSchema(requirementsOverrides)}
|
||||||
data={requirementsOverrides}
|
data={requirementsOverrides}
|
||||||
elements={getOverrides()}
|
elements={getOverrides()}
|
||||||
setEditing={onEditingOverrides}
|
setEditing={onEditingOverrides}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,27 @@
|
||||||
|
import * as R from 'ramda'
|
||||||
import * as Yup from 'yup'
|
import * as Yup from 'yup'
|
||||||
|
|
||||||
import Autocomplete from 'src/components/inputs/formik/Autocomplete.js'
|
import Autocomplete from 'src/components/inputs/formik/Autocomplete.js'
|
||||||
import { getView, requirementOptions } from 'src/pages/Triggers/helper'
|
import { getView } from 'src/pages/Triggers/helper'
|
||||||
|
|
||||||
|
const advancedRequirementOptions = [
|
||||||
|
{ display: 'SMS verification', code: 'sms' },
|
||||||
|
{ display: 'ID card image', code: 'idCardPhoto' },
|
||||||
|
{ display: 'ID data', code: 'idCardData' },
|
||||||
|
{ display: 'Customer camera', code: 'facephoto' },
|
||||||
|
{ display: 'US SSN', code: 'usSsn' }
|
||||||
|
]
|
||||||
|
|
||||||
|
const alreadyExists = (values, requirement) => {
|
||||||
|
return R.isEmpty(R.filter(value => value.requirement === requirement)(values))
|
||||||
|
}
|
||||||
|
|
||||||
|
const displayRequirement = code => {
|
||||||
|
return R.prop(
|
||||||
|
'display',
|
||||||
|
R.find(R.propEq('code', code))(advancedRequirementOptions)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
const defaultSchema = Yup.object().shape({
|
const defaultSchema = Yup.object().shape({
|
||||||
expirationTime: Yup.string()
|
expirationTime: Yup.string()
|
||||||
|
|
@ -13,18 +33,33 @@ const defaultSchema = Yup.object().shape({
|
||||||
.required()
|
.required()
|
||||||
})
|
})
|
||||||
|
|
||||||
const overridesSchema = Yup.object().shape({
|
const getOverridesSchema = values => {
|
||||||
id: Yup.string()
|
return Yup.object().shape({
|
||||||
.label('Requirement')
|
id: Yup.string()
|
||||||
.required(),
|
.label('Requirement')
|
||||||
expirationTime: Yup.string()
|
.required()
|
||||||
.label('Expiration time')
|
.test({
|
||||||
.required(),
|
test() {
|
||||||
automation: Yup.string()
|
const { requirement } = this.parent
|
||||||
.label('Automation')
|
if (!alreadyExists(values, requirement)) {
|
||||||
.matches(/(Manual|Automatic)/)
|
return this.createError({
|
||||||
.required()
|
message: `Requirement ${displayRequirement(
|
||||||
})
|
requirement
|
||||||
|
)} already overriden`
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
expirationTime: Yup.string()
|
||||||
|
.label('Expiration time')
|
||||||
|
.required(),
|
||||||
|
automation: Yup.string()
|
||||||
|
.label('Automation')
|
||||||
|
.matches(/(Manual|Automatic)/)
|
||||||
|
.required()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
const getDefaultSettings = () => {
|
const getDefaultSettings = () => {
|
||||||
return [
|
return [
|
||||||
|
|
@ -60,10 +95,10 @@ const getOverrides = () => {
|
||||||
header: 'Requirement',
|
header: 'Requirement',
|
||||||
width: 196,
|
width: 196,
|
||||||
size: 'sm',
|
size: 'sm',
|
||||||
view: getView(requirementOptions, 'display'),
|
view: getView(advancedRequirementOptions, 'display'),
|
||||||
input: Autocomplete,
|
input: Autocomplete,
|
||||||
inputProps: {
|
inputProps: {
|
||||||
options: requirementOptions,
|
options: advancedRequirementOptions,
|
||||||
labelProp: 'display',
|
labelProp: 'display',
|
||||||
valueProp: 'code'
|
valueProp: 'code'
|
||||||
}
|
}
|
||||||
|
|
@ -108,7 +143,7 @@ const overridesDefaults = {
|
||||||
|
|
||||||
export {
|
export {
|
||||||
defaultSchema,
|
defaultSchema,
|
||||||
overridesSchema,
|
getOverridesSchema,
|
||||||
defaults,
|
defaults,
|
||||||
overridesDefaults,
|
overridesDefaults,
|
||||||
getDefaultSettings,
|
getDefaultSettings,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue