diff --git a/frontend/src/component/feature/FeatureStrategy/FeatureStrategyCreate/FeatureStrategyCreate.tsx b/frontend/src/component/feature/FeatureStrategy/FeatureStrategyCreate/FeatureStrategyCreate.tsx index a9274bce9e..1c595e07f6 100644 --- a/frontend/src/component/feature/FeatureStrategy/FeatureStrategyCreate/FeatureStrategyCreate.tsx +++ b/frontend/src/component/feature/FeatureStrategy/FeatureStrategyCreate/FeatureStrategyCreate.tsx @@ -51,12 +51,9 @@ export const FeatureStrategyCreate = () => { const { feature, refetchFeature } = useFeature(projectId, featureId); const ref = useRef(feature); - const isChangeRequestEnabled = useChangeRequestsEnabled(); + const isChangeRequestEnabled = useChangeRequestsEnabled(environmentId); const { refetch: refetchChangeRequests } = useChangeRequestOpen(projectId); - const isChangeRequest = - isChangeRequestEnabled && environmentId === 'production'; // FIXME: get from API - is it enabled - const { data, staleDataNotification, forceRefreshCache } = useCollaborateData( { @@ -127,7 +124,7 @@ export const FeatureStrategyCreate = () => { const payload = createStrategyPayload(strategy); try { - if (isChangeRequest) { + if (isChangeRequestEnabled) { await onStrategyRequestAdd(payload); } else { await onAddStrategy(payload); @@ -169,7 +166,7 @@ export const FeatureStrategyCreate = () => { loading={loading} permission={CREATE_FEATURE_STRATEGY} errors={errors} - isChangeRequest={isChangeRequest} + isChangeRequest={isChangeRequestEnabled} /> {staleDataNotification} diff --git a/frontend/src/component/feature/FeatureStrategy/FeatureStrategyEdit/FeatureStrategyEdit.tsx b/frontend/src/component/feature/FeatureStrategy/FeatureStrategyEdit/FeatureStrategyEdit.tsx index a46662a804..68c64471a6 100644 --- a/frontend/src/component/feature/FeatureStrategy/FeatureStrategyEdit/FeatureStrategyEdit.tsx +++ b/frontend/src/component/feature/FeatureStrategy/FeatureStrategyEdit/FeatureStrategyEdit.tsx @@ -46,12 +46,9 @@ export const FeatureStrategyEdit = () => { const { unleashUrl } = uiConfig; const navigate = useNavigate(); const { addChangeRequest } = useChangeRequestApi(); - const isChangeRequestEnabled = useChangeRequestsEnabled(); + const isChangeRequestEnabled = useChangeRequestsEnabled(environmentId); const { refetch: refetchChangeRequests } = useChangeRequestOpen(projectId); - const isChangeRequest = - isChangeRequestEnabled && environmentId === 'production'; // FIXME: get from API - is it enabled - const { feature, refetchFeature } = useFeature(projectId, featureId); const ref = useRef(feature); @@ -139,7 +136,7 @@ export const FeatureStrategyEdit = () => { const payload = createStrategyPayload(strategy); try { - if (isChangeRequest) { + if (isChangeRequestEnabled) { await onStrategyRequestEdit(payload); } else { await onStrategyEdit(payload); @@ -186,7 +183,7 @@ export const FeatureStrategyEdit = () => { loading={loading} permission={UPDATE_FEATURE_STRATEGY} errors={errors} - isChangeRequest={isChangeRequest} + isChangeRequest={isChangeRequestEnabled} /> {staleDataNotification} diff --git a/frontend/src/component/feature/FeatureStrategy/FeatureStrategyRemove/FeatureStrategyRemove.tsx b/frontend/src/component/feature/FeatureStrategy/FeatureStrategyRemove/FeatureStrategyRemove.tsx index 2d4965cabb..fa624361a4 100644 --- a/frontend/src/component/feature/FeatureStrategy/FeatureStrategyRemove/FeatureStrategyRemove.tsx +++ b/frontend/src/component/feature/FeatureStrategy/FeatureStrategyRemove/FeatureStrategyRemove.tsx @@ -165,7 +165,7 @@ export const FeatureStrategyRemove = ({ }: IFeatureStrategyRemoveProps) => { const [openDialogue, setOpenDialogue] = useState(false); - const changeRequestsEnabled = useChangeRequestsEnabled(); + const changeRequestsEnabled = useChangeRequestsEnabled(environmentId); const onRemove = useOnRemove({ featureId, diff --git a/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverviewEnvSwitches/FeatureOverviewEnvSwitch/FeatureOverviewEnvSwitch.tsx b/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverviewEnvSwitches/FeatureOverviewEnvSwitch/FeatureOverviewEnvSwitch.tsx index 8e48a595d4..5f8ed871fd 100644 --- a/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverviewEnvSwitches/FeatureOverviewEnvSwitch/FeatureOverviewEnvSwitch.tsx +++ b/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverviewEnvSwitches/FeatureOverviewEnvSwitch/FeatureOverviewEnvSwitch.tsx @@ -35,7 +35,7 @@ const FeatureOverviewEnvSwitch = ({ const { refetchFeature } = useFeature(projectId, featureId); const { setToastData, setToastApiError } = useToast(); const { classes: styles } = useStyles(); - const changeRequestsEnabled = useChangeRequestsEnabled(); + const changeRequestsEnabled = useChangeRequestsEnabled(env.name); const { onChangeRequestToggle, onChangeRequestToggleClose, @@ -85,7 +85,7 @@ const FeatureOverviewEnvSwitch = ({ }; const toggleEnvironment = async (e: React.ChangeEvent) => { - if (changeRequestsEnabled && env.name === 'production') { + if (changeRequestsEnabled) { e.preventDefault(); onChangeRequestToggle(featureId, env.name, !env.enabled); return; diff --git a/frontend/src/component/feature/FeatureView/FeatureView.tsx b/frontend/src/component/feature/FeatureView/FeatureView.tsx index 02b09abcaa..c4f0fa4a56 100644 --- a/frontend/src/component/feature/FeatureView/FeatureView.tsx +++ b/frontend/src/component/feature/FeatureView/FeatureView.tsx @@ -32,7 +32,6 @@ import { useRequiredPathParam } from 'hooks/useRequiredPathParam'; import { FeatureArchiveDialog } from '../../common/FeatureArchiveDialog/FeatureArchiveDialog'; import { DraftBanner } from 'component/changeRequest/DraftBanner/DraftBanner'; import { MainLayout } from 'component/layout/MainLayout/MainLayout'; -import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig'; import { useChangeRequestsEnabled } from '../../../hooks/useChangeRequestsEnabled'; export const FeatureView = () => { diff --git a/frontend/src/component/project/Project/ProjectFeatureToggles/ProjectFeatureToggles.tsx b/frontend/src/component/project/Project/ProjectFeatureToggles/ProjectFeatureToggles.tsx index e1806a73e6..1b89cb61cf 100644 --- a/frontend/src/component/project/Project/ProjectFeatureToggles/ProjectFeatureToggles.tsx +++ b/frontend/src/component/project/Project/ProjectFeatureToggles/ProjectFeatureToggles.tsx @@ -119,7 +119,7 @@ export const ProjectFeatureToggles = ({ environment: string, enabled: boolean ) => { - if (changeRequestsEnabled && environment === 'production') { + if (changeRequestsEnabled) { onChangeRequestToggle(featureName, environment, enabled); throw new Error('Additional approval required'); } diff --git a/frontend/src/hooks/useChangeRequestsEnabled.ts b/frontend/src/hooks/useChangeRequestsEnabled.ts index cb9ee90d79..b44e7d2432 100644 --- a/frontend/src/hooks/useChangeRequestsEnabled.ts +++ b/frontend/src/hooks/useChangeRequestsEnabled.ts @@ -1,7 +1,10 @@ import useUiConfig from './api/getters/useUiConfig/useUiConfig'; -export const useChangeRequestsEnabled = () => { +export const useChangeRequestsEnabled = (environment?: string) => { // it can be swapped with proper settings instead of feature flag const { uiConfig } = useUiConfig(); - return Boolean(uiConfig?.flags?.changeRequests); + return ( + Boolean(uiConfig?.flags?.changeRequests) && + (environment === 'production' || typeof environment === 'undefined') + ); };