diff --git a/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategiesEnvironments/FeatureStrategyEditable/FeatureStrategyEditable.tsx b/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategiesEnvironments/FeatureStrategyEditable/FeatureStrategyEditable.tsx index 15733d4f86..902d4bc974 100644 --- a/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategiesEnvironments/FeatureStrategyEditable/FeatureStrategyEditable.tsx +++ b/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategiesEnvironments/FeatureStrategyEditable/FeatureStrategyEditable.tsx @@ -11,7 +11,7 @@ import { } from '../../../../../../interfaces/strategy'; import FeatureStrategyAccordion from '../../FeatureStrategyAccordion/FeatureStrategyAccordion'; import cloneDeep from 'lodash.clonedeep'; -import { Button, IconButton, Tooltip } from '@material-ui/core'; +import { Tooltip } from '@material-ui/core'; import ConditionallyRender from '../../../../../common/ConditionallyRender'; import { useStyles } from './FeatureStrategyEditable.styles'; import { Delete } from '@material-ui/icons'; @@ -24,6 +24,8 @@ import { import AccessContext from '../../../../../../contexts/AccessContext'; import { UPDATE_FEATURE } from '../../../../../providers/AccessProvider/permissions'; import useFeatureApi from '../../../../../../hooks/api/actions/useFeatureApi/useFeatureApi'; +import PermissionIconButton from '../../../../../common/PermissionIconButton/PermissionIconButton'; +import PermissionButton from '../../../../../common/PermissionButton/PermissionButton'; interface IFeatureStrategyEditable { currentStrategy: IFeatureStrategy; @@ -45,8 +47,8 @@ const FeatureStrategyEditable = ({ const { activeEnvironment, featureCache, dirty, setDirty } = useContext( FeatureStrategiesUIContext ); - const [strategyCache, setStrategyCache] = useState( - null + const [strategyCache, setStrategyCache] = useState( + cloneDeep(currentStrategy) ); const styles = useStyles(); @@ -88,7 +90,6 @@ const FeatureStrategyEditable = ({ useEffect(() => { const dirtyStrategy = dirty[strategy.id]; if (dirtyStrategy) return; - mutate(FEATURE_STRATEGY_CACHE_KEY, { ...currentStrategy }, false); setStrategyCache(cloneDeep(currentStrategy)); /* eslint-disable-next-line */ @@ -112,15 +113,16 @@ const FeatureStrategyEditable = ({ }; const discardChanges = () => { - mutate(FEATURE_STRATEGY_CACHE_KEY, { ...strategyCache }, false); setDirty(prev => ({ ...prev, [strategy.id]: false })); + mutate(FEATURE_STRATEGY_CACHE_KEY, { ...strategyCache }, false); }; const setStrategyConstraints = (constraints: IConstraint[]) => { - const updatedStrategy = { ...strategy }; - updatedStrategy.constraints = constraints; - mutate(FEATURE_STRATEGY_CACHE_KEY, { ...updatedStrategy }, false); + const updatedStrategy = cloneDeep(strategy); + + updatedStrategy.constraints = [...cloneDeep(constraints)]; setDirty(prev => ({ ...prev, [strategy.id]: true })); + mutate(FEATURE_STRATEGY_CACHE_KEY, { ...updatedStrategy }, false); }; if (!strategy.id) return null; @@ -134,7 +136,7 @@ const FeatureStrategyEditable = ({ /> - { e.stopPropagation(); @@ -156,7 +160,7 @@ const FeatureStrategyEditable = ({ }} > - + } /> @@ -167,7 +171,9 @@ const FeatureStrategyEditable = ({ show={ <>
- - +
}