From 5305c868e5ece2692498256988f4ea10694d96fc Mon Sep 17 00:00:00 2001 From: Mateusz Kwasniewski Date: Tue, 23 Jan 2024 08:58:06 +0100 Subject: [PATCH] fix: update stickiness between tabs (#5991) Fixes a bug where stickiness update to the main strategy would not propagate to strategy variants --- .../NewFeatureStrategyForm.tsx | 19 ++++++++++++++++ .../StrategyTypes/NewStrategyVariants.tsx | 22 ++++++++----------- 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/frontend/src/component/feature/FeatureStrategy/FeatureStrategyForm/NewFeatureStrategyForm.tsx b/frontend/src/component/feature/FeatureStrategy/FeatureStrategyForm/NewFeatureStrategyForm.tsx index c05ee7bebe..b36595aebb 100644 --- a/frontend/src/component/feature/FeatureStrategy/FeatureStrategyForm/NewFeatureStrategyForm.tsx +++ b/frontend/src/component/feature/FeatureStrategy/FeatureStrategyForm/NewFeatureStrategyForm.tsx @@ -353,6 +353,25 @@ export const NewFeatureStrategyForm = ({ const showVariants = strategy.parameters && 'stickiness' in strategy.parameters; + + const stickiness = + strategy?.parameters && 'stickiness' in strategy?.parameters + ? String(strategy.parameters.stickiness) + : 'default'; + + useEffect(() => { + setStrategy((prev) => ({ + ...prev, + variants: (strategy.variants || []).map((variant) => ({ + stickiness, + name: variant.name, + weight: variant.weight, + payload: variant.payload, + weightType: variant.weightType, + })), + })); + }, [stickiness, JSON.stringify(strategy.variants)]); + return ( <> diff --git a/frontend/src/component/feature/StrategyTypes/NewStrategyVariants.tsx b/frontend/src/component/feature/StrategyTypes/NewStrategyVariants.tsx index b55f9a3272..b6f344e15e 100644 --- a/frontend/src/component/feature/StrategyTypes/NewStrategyVariants.tsx +++ b/frontend/src/component/feature/StrategyTypes/NewStrategyVariants.tsx @@ -42,7 +42,15 @@ export const NewStrategyVariants: FC<{ editable?: boolean; }> = ({ strategy, setStrategy, projectId, environment, editable }) => { const { trackEvent } = usePlausibleTracker(); - const [variantsEdit, setVariantsEdit] = useState([]); + const initialVariants = (strategy.variants || []).map((variant) => ({ + ...variant, + new: editable || false, + isValid: true, + id: uuidv4(), + overrides: [], + })); + const [variantsEdit, setVariantsEdit] = + useState(initialVariants); const theme = useTheme(); const stickiness = @@ -61,18 +69,6 @@ export const NewStrategyVariants: FC<{ }; }, [JSON.stringify(variantsEdit)]); - useEffect(() => { - setVariantsEdit( - (strategy.variants || []).map((variant) => ({ - ...variant, - new: editable || false, - isValid: true, - id: uuidv4(), - overrides: [], - })), - ); - }, []); - useEffect(() => { setStrategy((prev) => ({ ...prev,