From cafcd0e946ed57b481e27997c0661abb6f9b3233 Mon Sep 17 00:00:00 2001 From: Gilad Lekner <=> Date: Thu, 25 Jun 2020 13:56:24 +0300 Subject: [PATCH] Fixes 1850395: Affinity modal crashes when user tries to change Operator --- .../affinity-modal/components/affinity-edit/affinity-edit.tsx | 2 +- .../affinity-expression-list/affinity-expression-row.tsx | 2 +- .../modals/scheduling-modals/affinity-modal/validations.ts | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/packages/kubevirt-plugin/src/components/modals/scheduling-modals/affinity-modal/components/affinity-edit/affinity-edit.tsx b/frontend/packages/kubevirt-plugin/src/components/modals/scheduling-modals/affinity-modal/components/affinity-edit/affinity-edit.tsx index cc9612a937a..63c007b5374 100644 --- a/frontend/packages/kubevirt-plugin/src/components/modals/scheduling-modals/affinity-modal/components/affinity-edit/affinity-edit.tsx +++ b/frontend/packages/kubevirt-plugin/src/components/modals/scheduling-modals/affinity-modal/components/affinity-edit/affinity-edit.tsx @@ -97,7 +97,7 @@ export const AffinityEdit: React.FC = ({ const isWeightInvalid = !isWeightValid(focusedAffinity); const isAffinityInvalid = - (affinityExpressions.length === 0 && affinityFields.length === 0) || + (affinityExpressions?.length === 0 && affinityFields?.length === 0) || isWeightInvalid || isExpressionsInvalid || (isNodeAffinity && isFieldsInvalid) || diff --git a/frontend/packages/kubevirt-plugin/src/components/modals/scheduling-modals/affinity-modal/components/affinity-expression-list/affinity-expression-row.tsx b/frontend/packages/kubevirt-plugin/src/components/modals/scheduling-modals/affinity-modal/components/affinity-expression-list/affinity-expression-row.tsx index 1b725e1c5fc..5267e40a879 100644 --- a/frontend/packages/kubevirt-plugin/src/components/modals/scheduling-modals/affinity-modal/components/affinity-expression-list/affinity-expression-row.tsx +++ b/frontend/packages/kubevirt-plugin/src/components/modals/scheduling-modals/affinity-modal/components/affinity-expression-list/affinity-expression-row.tsx @@ -19,7 +19,7 @@ export const AffinityExpressionRow = ({ onChange, onDelete, }: AffinityExpressionRowProps) => { - const { id, key, values, operator } = expression; + const { id, key, values = [], operator } = expression; const enableValueField = operator !== 'Exists' && operator !== 'DoesNotExist'; const [isValuesExpanded, setIsValuesExpanded] = React.useState(false); diff --git a/frontend/packages/kubevirt-plugin/src/components/modals/scheduling-modals/affinity-modal/validations.ts b/frontend/packages/kubevirt-plugin/src/components/modals/scheduling-modals/affinity-modal/validations.ts index f36cb59de2c..049bdea92e2 100644 --- a/frontend/packages/kubevirt-plugin/src/components/modals/scheduling-modals/affinity-modal/validations.ts +++ b/frontend/packages/kubevirt-plugin/src/components/modals/scheduling-modals/affinity-modal/validations.ts @@ -6,9 +6,9 @@ export const isWeightValid = (focusedAffinity: AffinityRowData) => (focusedAffinity.weight > 0 && focusedAffinity.weight <= 100); export const isTermsInvalid = (terms: AffinityLabel[]) => - terms.some( + terms?.some( ({ key, values, operator }) => - !key || ((operator === 'In' || operator === 'NotIn') && values.length === 0), + !key || ((operator === 'In' || operator === 'NotIn') && values?.length === 0), ); export const getTopologyKeyValidation = ({ type, condition, topologyKey }: AffinityRowData) => {