From c55361ca2078223a844d8e6e97aa2a6578434b1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nuno=20G=C3=B3is?= Date: Fri, 12 Sep 2025 12:30:57 +0100 Subject: [PATCH] chore: persist strategy filter when going back from release template preview --- .../FeatureStrategyMenu/FeatureStrategyMenu.tsx | 8 +++++++- .../FeatureStrategyMenuCards/FeatureStrategyMenuCards.tsx | 8 +++++--- .../ReleasePlan/ReleasePlanReviewDialog.tsx | 8 +++++++- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/frontend/src/component/feature/FeatureStrategy/FeatureStrategyMenu/FeatureStrategyMenu.tsx b/frontend/src/component/feature/FeatureStrategy/FeatureStrategyMenu/FeatureStrategyMenu.tsx index 0d2268df38..c63022e46f 100644 --- a/frontend/src/component/feature/FeatureStrategy/FeatureStrategyMenu/FeatureStrategyMenu.tsx +++ b/frontend/src/component/feature/FeatureStrategy/FeatureStrategyMenu/FeatureStrategyMenu.tsx @@ -20,7 +20,10 @@ import { useChangeRequestsEnabled } from 'hooks/useChangeRequestsEnabled'; import { formatUnknownError } from 'utils/formatUnknownError'; import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig'; import { ReleasePlanReviewDialog } from '../../FeatureView/FeatureOverview/ReleasePlan/ReleasePlanReviewDialog.tsx'; -import { FeatureStrategyMenuCards } from './FeatureStrategyMenuCards/FeatureStrategyMenuCards.tsx'; +import { + FeatureStrategyMenuCards, + type StrategyFilterValue, +} from './FeatureStrategyMenuCards/FeatureStrategyMenuCards.tsx'; import { useUiFlag } from 'hooks/useUiFlag.ts'; interface IFeatureStrategyMenuProps { @@ -61,6 +64,7 @@ export const FeatureStrategyMenu = ({ const [isStrategyMenuDialogOpen, setIsStrategyMenuDialogOpen] = useState(false); const [onlyReleasePlans, setOnlyReleasePlans] = useState(false); + const [filter, setFilter] = useState(null); const navigate = useNavigate(); const { trackEvent } = usePlausibleTracker(); const [selectedTemplate, setSelectedTemplate] = @@ -251,6 +255,8 @@ export const FeatureStrategyMenu = ({ projectId={projectId} featureId={featureId} environmentId={environmentId} + filter={filter} + setFilter={setFilter} onAddReleasePlan={(template) => { setSelectedTemplate(template); addReleasePlan(template); diff --git a/frontend/src/component/feature/FeatureStrategy/FeatureStrategyMenu/FeatureStrategyMenuCards/FeatureStrategyMenuCards.tsx b/frontend/src/component/feature/FeatureStrategy/FeatureStrategyMenu/FeatureStrategyMenuCards/FeatureStrategyMenuCards.tsx index f5783c3ee5..7475b7f0db 100644 --- a/frontend/src/component/feature/FeatureStrategy/FeatureStrategyMenu/FeatureStrategyMenuCards/FeatureStrategyMenuCards.tsx +++ b/frontend/src/component/feature/FeatureStrategy/FeatureStrategyMenu/FeatureStrategyMenuCards/FeatureStrategyMenuCards.tsx @@ -6,7 +6,7 @@ import { Link as RouterLink, useNavigate } from 'react-router-dom'; import CloseIcon from '@mui/icons-material/Close'; import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig.ts'; import { HelpIcon } from 'component/common/HelpIcon/HelpIcon.tsx'; -import { useContext, useMemo, useState } from 'react'; +import { type Dispatch, type SetStateAction, useContext, useMemo } from 'react'; import { FeatureStrategyMenuCardsSection, StyledStrategyModalSectionHeader, @@ -79,6 +79,8 @@ interface IFeatureStrategyMenuCardsProps { projectId: string; featureId: string; environmentId: string; + filter: StrategyFilterValue; + setFilter: Dispatch>; onAddReleasePlan: (template: IReleasePlanTemplate) => void; onReviewReleasePlan: (template: IReleasePlanTemplate) => void; onClose: () => void; @@ -88,6 +90,8 @@ export const FeatureStrategyMenuCards = ({ projectId, featureId, environmentId, + filter, + setFilter, onAddReleasePlan, onReviewReleasePlan, onClose, @@ -99,8 +103,6 @@ export const FeatureStrategyMenuCards = ({ const { strategies } = useStrategies(); - const [filter, setFilter] = useState(null); - const activeStrategies = strategies.filter( (strategy) => !strategy.deprecated, ); diff --git a/frontend/src/component/feature/FeatureView/FeatureOverview/ReleasePlan/ReleasePlanReviewDialog.tsx b/frontend/src/component/feature/FeatureView/FeatureOverview/ReleasePlan/ReleasePlanReviewDialog.tsx index 1264db01de..39b1df161a 100644 --- a/frontend/src/component/feature/FeatureView/FeatureOverview/ReleasePlan/ReleasePlanReviewDialog.tsx +++ b/frontend/src/component/feature/FeatureView/FeatureOverview/ReleasePlan/ReleasePlanReviewDialog.tsx @@ -16,6 +16,7 @@ import { useFeature } from 'hooks/api/getters/useFeature/useFeature'; import { useReleasePlans } from 'hooks/api/getters/useReleasePlans/useReleasePlans'; import ArrowBackIcon from '@mui/icons-material/ArrowBack'; import CloseIcon from '@mui/icons-material/Close'; +import { useUiFlag } from 'hooks/useUiFlag.ts'; const StyledDialog = styled(Dialog)(({ theme }) => ({ '& .MuiDialog-paper': { @@ -81,6 +82,7 @@ export const ReleasePlanReviewDialog = ({ featureName, environment, ); + const newStrategyModalEnabled = useUiFlag('newStrategyModal'); const activeReleasePlan = releasePlans[0]; @@ -140,7 +142,11 @@ export const ReleasePlanReviewDialog = ({