1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-02-14 00:19:16 +01:00

feat: env check in change requests (#2336)

This commit is contained in:
Mateusz Kwasniewski 2022-11-07 09:16:29 +01:00 committed by GitHub
parent bf521b58fd
commit c6f906159b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 15 additions and 19 deletions

View File

@ -51,12 +51,9 @@ export const FeatureStrategyCreate = () => {
const { feature, refetchFeature } = useFeature(projectId, featureId); const { feature, refetchFeature } = useFeature(projectId, featureId);
const ref = useRef<IFeatureToggle>(feature); const ref = useRef<IFeatureToggle>(feature);
const isChangeRequestEnabled = useChangeRequestsEnabled(); const isChangeRequestEnabled = useChangeRequestsEnabled(environmentId);
const { refetch: refetchChangeRequests } = useChangeRequestOpen(projectId); const { refetch: refetchChangeRequests } = useChangeRequestOpen(projectId);
const isChangeRequest =
isChangeRequestEnabled && environmentId === 'production'; // FIXME: get from API - is it enabled
const { data, staleDataNotification, forceRefreshCache } = const { data, staleDataNotification, forceRefreshCache } =
useCollaborateData<IFeatureToggle>( useCollaborateData<IFeatureToggle>(
{ {
@ -127,7 +124,7 @@ export const FeatureStrategyCreate = () => {
const payload = createStrategyPayload(strategy); const payload = createStrategyPayload(strategy);
try { try {
if (isChangeRequest) { if (isChangeRequestEnabled) {
await onStrategyRequestAdd(payload); await onStrategyRequestAdd(payload);
} else { } else {
await onAddStrategy(payload); await onAddStrategy(payload);
@ -169,7 +166,7 @@ export const FeatureStrategyCreate = () => {
loading={loading} loading={loading}
permission={CREATE_FEATURE_STRATEGY} permission={CREATE_FEATURE_STRATEGY}
errors={errors} errors={errors}
isChangeRequest={isChangeRequest} isChangeRequest={isChangeRequestEnabled}
/> />
{staleDataNotification} {staleDataNotification}
</FormTemplate> </FormTemplate>

View File

@ -46,12 +46,9 @@ export const FeatureStrategyEdit = () => {
const { unleashUrl } = uiConfig; const { unleashUrl } = uiConfig;
const navigate = useNavigate(); const navigate = useNavigate();
const { addChangeRequest } = useChangeRequestApi(); const { addChangeRequest } = useChangeRequestApi();
const isChangeRequestEnabled = useChangeRequestsEnabled(); const isChangeRequestEnabled = useChangeRequestsEnabled(environmentId);
const { refetch: refetchChangeRequests } = useChangeRequestOpen(projectId); const { refetch: refetchChangeRequests } = useChangeRequestOpen(projectId);
const isChangeRequest =
isChangeRequestEnabled && environmentId === 'production'; // FIXME: get from API - is it enabled
const { feature, refetchFeature } = useFeature(projectId, featureId); const { feature, refetchFeature } = useFeature(projectId, featureId);
const ref = useRef<IFeatureToggle>(feature); const ref = useRef<IFeatureToggle>(feature);
@ -139,7 +136,7 @@ export const FeatureStrategyEdit = () => {
const payload = createStrategyPayload(strategy); const payload = createStrategyPayload(strategy);
try { try {
if (isChangeRequest) { if (isChangeRequestEnabled) {
await onStrategyRequestEdit(payload); await onStrategyRequestEdit(payload);
} else { } else {
await onStrategyEdit(payload); await onStrategyEdit(payload);
@ -186,7 +183,7 @@ export const FeatureStrategyEdit = () => {
loading={loading} loading={loading}
permission={UPDATE_FEATURE_STRATEGY} permission={UPDATE_FEATURE_STRATEGY}
errors={errors} errors={errors}
isChangeRequest={isChangeRequest} isChangeRequest={isChangeRequestEnabled}
/> />
{staleDataNotification} {staleDataNotification}
</FormTemplate> </FormTemplate>

View File

@ -165,7 +165,7 @@ export const FeatureStrategyRemove = ({
}: IFeatureStrategyRemoveProps) => { }: IFeatureStrategyRemoveProps) => {
const [openDialogue, setOpenDialogue] = useState(false); const [openDialogue, setOpenDialogue] = useState(false);
const changeRequestsEnabled = useChangeRequestsEnabled(); const changeRequestsEnabled = useChangeRequestsEnabled(environmentId);
const onRemove = useOnRemove({ const onRemove = useOnRemove({
featureId, featureId,

View File

@ -35,7 +35,7 @@ const FeatureOverviewEnvSwitch = ({
const { refetchFeature } = useFeature(projectId, featureId); const { refetchFeature } = useFeature(projectId, featureId);
const { setToastData, setToastApiError } = useToast(); const { setToastData, setToastApiError } = useToast();
const { classes: styles } = useStyles(); const { classes: styles } = useStyles();
const changeRequestsEnabled = useChangeRequestsEnabled(); const changeRequestsEnabled = useChangeRequestsEnabled(env.name);
const { const {
onChangeRequestToggle, onChangeRequestToggle,
onChangeRequestToggleClose, onChangeRequestToggleClose,
@ -85,7 +85,7 @@ const FeatureOverviewEnvSwitch = ({
}; };
const toggleEnvironment = async (e: React.ChangeEvent) => { const toggleEnvironment = async (e: React.ChangeEvent) => {
if (changeRequestsEnabled && env.name === 'production') { if (changeRequestsEnabled) {
e.preventDefault(); e.preventDefault();
onChangeRequestToggle(featureId, env.name, !env.enabled); onChangeRequestToggle(featureId, env.name, !env.enabled);
return; return;

View File

@ -32,7 +32,6 @@ import { useRequiredPathParam } from 'hooks/useRequiredPathParam';
import { FeatureArchiveDialog } from '../../common/FeatureArchiveDialog/FeatureArchiveDialog'; import { FeatureArchiveDialog } from '../../common/FeatureArchiveDialog/FeatureArchiveDialog';
import { DraftBanner } from 'component/changeRequest/DraftBanner/DraftBanner'; import { DraftBanner } from 'component/changeRequest/DraftBanner/DraftBanner';
import { MainLayout } from 'component/layout/MainLayout/MainLayout'; import { MainLayout } from 'component/layout/MainLayout/MainLayout';
import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig';
import { useChangeRequestsEnabled } from '../../../hooks/useChangeRequestsEnabled'; import { useChangeRequestsEnabled } from '../../../hooks/useChangeRequestsEnabled';
export const FeatureView = () => { export const FeatureView = () => {

View File

@ -119,7 +119,7 @@ export const ProjectFeatureToggles = ({
environment: string, environment: string,
enabled: boolean enabled: boolean
) => { ) => {
if (changeRequestsEnabled && environment === 'production') { if (changeRequestsEnabled) {
onChangeRequestToggle(featureName, environment, enabled); onChangeRequestToggle(featureName, environment, enabled);
throw new Error('Additional approval required'); throw new Error('Additional approval required');
} }

View File

@ -1,7 +1,10 @@
import useUiConfig from './api/getters/useUiConfig/useUiConfig'; 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 // it can be swapped with proper settings instead of feature flag
const { uiConfig } = useUiConfig(); const { uiConfig } = useUiConfig();
return Boolean(uiConfig?.flags?.changeRequests); return (
Boolean(uiConfig?.flags?.changeRequests) &&
(environment === 'production' || typeof environment === 'undefined')
);
}; };