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 ref = useRef<IFeatureToggle>(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<IFeatureToggle>(
{
@ -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}
</FormTemplate>

View File

@ -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<IFeatureToggle>(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}
</FormTemplate>

View File

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

View File

@ -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;

View File

@ -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 = () => {

View File

@ -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');
}

View File

@ -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')
);
};