From 1a19d1e6fba22e2dc566172e8123314a2fba32fa Mon Sep 17 00:00:00 2001 From: Fredrik Strand Oseberg Date: Tue, 29 Nov 2022 14:52:01 +0100 Subject: [PATCH] Feat/update dialogues (#2559) * Updates dialogues and strategy edit / creation to give a warning if you have a change request in review --- .../ChangeRequestConfirmDialog.tsx | 74 +++++++++++++------ .../FeatureStrategyForm.tsx | 32 ++++++-- .../hooks/useChangeRequestInReviewWarning.tsx | 29 ++++++++ 3 files changed, 106 insertions(+), 29 deletions(-) create mode 100644 frontend/src/hooks/useChangeRequestInReviewWarning.tsx diff --git a/frontend/src/component/changeRequest/ChangeRequestConfirmDialog/ChangeRequestConfirmDialog.tsx b/frontend/src/component/changeRequest/ChangeRequestConfirmDialog/ChangeRequestConfirmDialog.tsx index 54bc3bd4ca..8a3d338ebb 100644 --- a/frontend/src/component/changeRequest/ChangeRequestConfirmDialog/ChangeRequestConfirmDialog.tsx +++ b/frontend/src/component/changeRequest/ChangeRequestConfirmDialog/ChangeRequestConfirmDialog.tsx @@ -1,6 +1,10 @@ import { FC } from 'react'; import { Alert, Typography } from '@mui/material'; import { Dialogue } from 'component/common/Dialogue/Dialogue'; +import { usePendingChangeRequests } from 'hooks/api/getters/usePendingChangeRequests/usePendingChangeRequests'; +import { useRequiredPathParam } from 'hooks/useRequiredPathParam'; +import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; +import { useChangeRequestInReviewWarning } from 'hooks/useChangeRequestInReviewWarning'; interface IChangeRequestDialogueProps { isOpen: boolean; @@ -18,27 +22,49 @@ export const ChangeRequestDialogue: FC = ({ showBanner, environment, messageComponent, -}) => ( - - {showBanner && ( - - Change requests feature is enabled for {environment}. Your - changes needs to be approved before they will be live. All the - changes you do now will be added into a draft that you can - submit for review. - - )} - - Your suggestion: - - {messageComponent} - -); +}) => { + const projectId = useRequiredPathParam('projectId'); + const { draft } = usePendingChangeRequests(projectId); + const { changeRequestInReviewOrApproved, alert } = + useChangeRequestInReviewWarning(draft); + + const hasChangeRequestInReviewForEnvironment = + changeRequestInReviewOrApproved(environment || ''); + + const primaryButtonText = hasChangeRequestInReviewForEnvironment + ? 'Add to existing change request' + : 'Add suggestion to draft'; + + return ( + + + + Change requests feature is enabled for {environment}. + Your changes needs to be approved before they will be + live. All the changes you do now will be added into a + draft that you can submit for review. + + } + /> + + + Your suggestion: + + {messageComponent} + + ); +}; diff --git a/frontend/src/component/feature/FeatureStrategy/FeatureStrategyForm/FeatureStrategyForm.tsx b/frontend/src/component/feature/FeatureStrategy/FeatureStrategyForm/FeatureStrategyForm.tsx index dc819102c5..6d562d6120 100644 --- a/frontend/src/component/feature/FeatureStrategy/FeatureStrategyForm/FeatureStrategyForm.tsx +++ b/frontend/src/component/feature/FeatureStrategy/FeatureStrategyForm/FeatureStrategyForm.tsx @@ -28,6 +28,8 @@ import { useFeatureStrategyProdGuard, } from '../FeatureStrategyProdGuard/FeatureStrategyProdGuard'; import { formatFeaturePath } from '../FeatureStrategyEdit/FeatureStrategyEdit'; +import { useChangeRequestInReviewWarning } from 'hooks/useChangeRequestInReviewWarning'; +import { usePendingChangeRequests } from 'hooks/api/getters/usePendingChangeRequests/usePendingChangeRequests'; interface IFeatureStrategyFormProps { feature: IFeatureToggle; @@ -64,6 +66,18 @@ export const FeatureStrategyForm = ({ const enableProdGuard = useFeatureStrategyProdGuard(feature, environmentId); const { hasAccess } = useContext(AccessContext); const { strategyDefinition } = useStrategy(strategy?.name); + + const { draft } = usePendingChangeRequests(feature.project); + const { changeRequestInReviewOrApproved, alert } = + useChangeRequestInReviewWarning(draft); + + const hasChangeRequestInReviewForEnvironment = + changeRequestInReviewOrApproved(environmentId || ''); + + const changeRequestButtonText = hasChangeRequestInReviewForEnvironment + ? 'Add to existing change request' + : 'Add change to draft'; + const navigate = useNavigate(); const { @@ -130,10 +144,16 @@ export const FeatureStrategyForm = ({ return (
+ } /> } /> @@ -207,7 +227,9 @@ export const FeatureStrategyForm = ({ } data-testid={STRATEGY_FORM_SUBMIT_ID} > - {isChangeRequest ? 'Add change to draft' : 'Save strategy'} + {isChangeRequest + ? changeRequestButtonText + : 'Save strategy'}