From c81de4a5bc286512af8047df58167be2eedd3a36 Mon Sep 17 00:00:00 2001 From: andreas-unleash Date: Fri, 23 Jun 2023 10:31:29 +0300 Subject: [PATCH] fix: add strategy bug when strategySplittedButton flag is on (#4071) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes 2 bugs after the recent strategy improvements v2 changes: - When creating a strategy the `groupId` param of the Gradual Rollout strategy now populates the groupId (when using default strategy, the groupId will only be overwritten when it is an empty string ) with the feature name (as it was before) - When editing/setting a default strategy for an environment the `groupId` param should be an empty string, but editable. ## About the changes Closes # ### Important files ## Discussion points --------- Signed-off-by: andreas-unleash --- .../FeatureStrategyCreate.tsx | 14 +++++++++++--- .../FlexibleStrategy/FlexibleStrategy.tsx | 11 ++++++++++- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/frontend/src/component/feature/FeatureStrategy/FeatureStrategyCreate/FeatureStrategyCreate.tsx b/frontend/src/component/feature/FeatureStrategy/FeatureStrategyCreate/FeatureStrategyCreate.tsx index aa98261615..d45b4daec8 100644 --- a/frontend/src/component/feature/FeatureStrategy/FeatureStrategyCreate/FeatureStrategyCreate.tsx +++ b/frontend/src/component/feature/FeatureStrategy/FeatureStrategyCreate/FeatureStrategyCreate.tsx @@ -33,7 +33,7 @@ import { usePlausibleTracker } from 'hooks/usePlausibleTracker'; import useQueryParams from 'hooks/useQueryParams'; import useProject from 'hooks/api/getters/useProject/useProject'; import { useSegments } from 'hooks/api/getters/useSegments/useSegments'; -import { DEFAULT_STRATEGY } from '../../../project/Project/ProjectSettings/ProjectDefaultStrategySettings/ProjectEnvironment/ProjectEnvironmentDefaultStrategy/EditDefaultStrategy'; +import { DEFAULT_STRATEGY } from 'component/project/Project/ProjectSettings/ProjectDefaultStrategySettings/ProjectEnvironment/ProjectEnvironmentDefaultStrategy/EditDefaultStrategy'; export const FeatureStrategyCreate = () => { const projectId = useRequiredPathParam('projectId'); @@ -101,11 +101,19 @@ export const FeatureStrategyCreate = () => { useEffect(() => { if (shouldUseDefaultStrategy) { - setStrategy((defaultStrategy as any) || DEFAULT_STRATEGY); + const strategyTemplate = defaultStrategy || DEFAULT_STRATEGY; + if (strategyTemplate.parameters?.groupId === '' && featureId) { + strategyTemplate.parameters.groupId = featureId; + } + setStrategy(strategyTemplate as any); } else if (strategyDefinition) { setStrategy(createFeatureStrategy(featureId, strategyDefinition)); } - }, [featureId, strategyDefinition, shouldUseDefaultStrategy]); + }, [ + featureId, + JSON.stringify(strategyDefinition), + shouldUseDefaultStrategy, + ]); const onAddStrategy = async (payload: IFeatureStrategyPayload) => { await addStrategyToFeature( diff --git a/frontend/src/component/feature/StrategyTypes/FlexibleStrategy/FlexibleStrategy.tsx b/frontend/src/component/feature/StrategyTypes/FlexibleStrategy/FlexibleStrategy.tsx index bca2c7748a..82a395f708 100644 --- a/frontend/src/component/feature/StrategyTypes/FlexibleStrategy/FlexibleStrategy.tsx +++ b/frontend/src/component/feature/StrategyTypes/FlexibleStrategy/FlexibleStrategy.tsx @@ -14,8 +14,9 @@ import { import { StickinessSelect } from './StickinessSelect/StickinessSelect'; import { useDefaultProjectSettings } from 'hooks/useDefaultProjectSettings'; import Loader from '../../../common/Loader/Loader'; -import { useMemo } from 'react'; +import { useEffect, useMemo } from 'react'; import { useRequiredPathParam } from 'hooks/useRequiredPathParam'; +import { useLocation } from 'react-router'; interface IFlexibleStrategyProps { parameters: IFeatureStrategyParameters; @@ -31,7 +32,9 @@ const FlexibleStrategy = ({ }: IFlexibleStrategyProps) => { const projectId = useRequiredPathParam('projectId'); const { defaultStickiness, loading } = useDefaultProjectSettings(projectId); + const { pathname } = useLocation(); + const isDefaultStrategyEdit = pathname.includes('default-strategy'); const onUpdate = (field: string) => (newValue: string) => { updateParameter(field, newValue); }; @@ -57,6 +60,12 @@ const FlexibleStrategy = ({ onUpdate('stickiness')(stickiness); } + useEffect(() => { + if (isDefaultStrategyEdit) { + onUpdate('groupId')(''); + } + }, [isDefaultStrategyEdit]); + if (loading) { return ; }