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:
parent
bf521b58fd
commit
c6f906159b
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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,
|
||||||
|
@ -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;
|
||||||
|
@ -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 = () => {
|
||||||
|
@ -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');
|
||||||
}
|
}
|
||||||
|
@ -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')
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user