mirror of
https://github.com/Unleash/unleash.git
synced 2025-06-18 01:18:23 +02:00
Revert "fix: laggy switch" (#3815)
Reverts Unleash/unleash#3814 forcing merge to fix issue in demo instance: https://github.com/Unleash/unleash/pull/3815#issuecomment-1554712970
This commit is contained in:
parent
0c538f070a
commit
6e847d0015
@ -1,4 +1,4 @@
|
|||||||
import { useCallback, useState, VFC } from 'react';
|
import { useState, VFC } from 'react';
|
||||||
import { Box, styled } from '@mui/material';
|
import { Box, styled } from '@mui/material';
|
||||||
import PermissionSwitch from 'component/common/PermissionSwitch/PermissionSwitch';
|
import PermissionSwitch from 'component/common/PermissionSwitch/PermissionSwitch';
|
||||||
import { UPDATE_FEATURE_ENVIRONMENT } from 'component/providers/AccessProvider/permissions';
|
import { UPDATE_FEATURE_ENVIRONMENT } from 'component/providers/AccessProvider/permissions';
|
||||||
@ -68,45 +68,37 @@ export const FeatureToggleSwitch: VFC<IFeatureToggleSwitchProps> = ({
|
|||||||
onToggle(projectId, feature.name, environmentName, !isChecked);
|
onToggle(projectId, feature.name, environmentName, !isChecked);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleToggleEnvironmentOn = useCallback(
|
const handleToggleEnvironmentOn = async (
|
||||||
async (shouldActivateDisabled = false) => {
|
shouldActivateDisabled = false
|
||||||
try {
|
) => {
|
||||||
setIsChecked(!isChecked);
|
try {
|
||||||
await toggleFeatureEnvironmentOn(
|
setIsChecked(!isChecked);
|
||||||
projectId,
|
await toggleFeatureEnvironmentOn(
|
||||||
feature.name,
|
projectId,
|
||||||
environmentName,
|
feature.name,
|
||||||
shouldActivateDisabled
|
environmentName,
|
||||||
);
|
shouldActivateDisabled
|
||||||
setToastData({
|
);
|
||||||
type: 'success',
|
setToastData({
|
||||||
title: `Available in ${environmentName}`,
|
type: 'success',
|
||||||
text: `${feature.name} is now available in ${environmentName} based on its defined strategies.`,
|
title: `Available in ${environmentName}`,
|
||||||
});
|
text: `${feature.name} is now available in ${environmentName} based on its defined strategies.`,
|
||||||
callback();
|
});
|
||||||
} catch (error: unknown) {
|
callback();
|
||||||
if (
|
} catch (error: unknown) {
|
||||||
error instanceof Error &&
|
if (
|
||||||
error.message === ENVIRONMENT_STRATEGY_ERROR
|
error instanceof Error &&
|
||||||
) {
|
error.message === ENVIRONMENT_STRATEGY_ERROR
|
||||||
showInfoBox && showInfoBox();
|
) {
|
||||||
} else {
|
showInfoBox && showInfoBox();
|
||||||
setToastApiError(formatUnknownError(error));
|
} else {
|
||||||
}
|
setToastApiError(formatUnknownError(error));
|
||||||
rollbackIsChecked();
|
|
||||||
}
|
}
|
||||||
},
|
rollbackIsChecked();
|
||||||
[
|
}
|
||||||
rollbackIsChecked,
|
};
|
||||||
setToastApiError,
|
|
||||||
showInfoBox,
|
|
||||||
setToastData,
|
|
||||||
toggleFeatureEnvironmentOn,
|
|
||||||
setIsChecked,
|
|
||||||
]
|
|
||||||
);
|
|
||||||
|
|
||||||
const handleToggleEnvironmentOff = useCallback(async () => {
|
const handleToggleEnvironmentOff = async () => {
|
||||||
try {
|
try {
|
||||||
setIsChecked(!isChecked);
|
setIsChecked(!isChecked);
|
||||||
await toggleFeatureEnvironmentOff(
|
await toggleFeatureEnvironmentOff(
|
||||||
@ -124,15 +116,54 @@ export const FeatureToggleSwitch: VFC<IFeatureToggleSwitchProps> = ({
|
|||||||
setToastApiError(formatUnknownError(error));
|
setToastApiError(formatUnknownError(error));
|
||||||
rollbackIsChecked();
|
rollbackIsChecked();
|
||||||
}
|
}
|
||||||
}, [
|
};
|
||||||
toggleFeatureEnvironmentOff,
|
|
||||||
setToastData,
|
|
||||||
setToastApiError,
|
|
||||||
rollbackIsChecked,
|
|
||||||
setIsChecked,
|
|
||||||
]);
|
|
||||||
|
|
||||||
const featureHasOnlyDisabledStrategies = useCallback(() => {
|
const onClick = async (e: React.MouseEvent) => {
|
||||||
|
if (isChangeRequestConfigured(environmentName)) {
|
||||||
|
e.preventDefault();
|
||||||
|
if (featureHasOnlyDisabledStrategies()) {
|
||||||
|
setShowEnabledDialog(true);
|
||||||
|
} else {
|
||||||
|
onChangeRequestToggle(
|
||||||
|
feature.name,
|
||||||
|
environmentName,
|
||||||
|
!value,
|
||||||
|
false
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (value) {
|
||||||
|
await handleToggleEnvironmentOff();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (featureHasOnlyDisabledStrategies()) {
|
||||||
|
setShowEnabledDialog(true);
|
||||||
|
} else {
|
||||||
|
await handleToggleEnvironmentOn();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const onActivateStrategies = async () => {
|
||||||
|
if (isChangeRequestConfigured(environmentName)) {
|
||||||
|
onChangeRequestToggle(feature.name, environmentName, !value, true);
|
||||||
|
} else {
|
||||||
|
await handleToggleEnvironmentOn(true);
|
||||||
|
}
|
||||||
|
setShowEnabledDialog(false);
|
||||||
|
};
|
||||||
|
|
||||||
|
const onAddDefaultStrategy = async () => {
|
||||||
|
if (isChangeRequestConfigured(environmentName)) {
|
||||||
|
onChangeRequestToggle(feature.name, environmentName, !value, false);
|
||||||
|
} else {
|
||||||
|
await handleToggleEnvironmentOn();
|
||||||
|
}
|
||||||
|
setShowEnabledDialog(false);
|
||||||
|
};
|
||||||
|
|
||||||
|
const featureHasOnlyDisabledStrategies = () => {
|
||||||
const featureEnvironment = feature?.environments?.find(
|
const featureEnvironment = feature?.environments?.find(
|
||||||
env => env.name === environmentName
|
env => env.name === environmentName
|
||||||
);
|
);
|
||||||
@ -141,69 +172,7 @@ export const FeatureToggleSwitch: VFC<IFeatureToggleSwitchProps> = ({
|
|||||||
featureEnvironment?.strategies?.length > 0 &&
|
featureEnvironment?.strategies?.length > 0 &&
|
||||||
featureEnvironment?.strategies?.every(strategy => strategy.disabled)
|
featureEnvironment?.strategies?.every(strategy => strategy.disabled)
|
||||||
);
|
);
|
||||||
}, [environmentName]);
|
};
|
||||||
|
|
||||||
const onClick = useCallback(
|
|
||||||
async (e: React.MouseEvent) => {
|
|
||||||
if (isChangeRequestConfigured(environmentName)) {
|
|
||||||
e.preventDefault();
|
|
||||||
if (featureHasOnlyDisabledStrategies()) {
|
|
||||||
setShowEnabledDialog(true);
|
|
||||||
} else {
|
|
||||||
onChangeRequestToggle(
|
|
||||||
feature.name,
|
|
||||||
environmentName,
|
|
||||||
!value,
|
|
||||||
false
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (value) {
|
|
||||||
await handleToggleEnvironmentOff();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (featureHasOnlyDisabledStrategies()) {
|
|
||||||
setShowEnabledDialog(true);
|
|
||||||
} else {
|
|
||||||
await handleToggleEnvironmentOn();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
[
|
|
||||||
isChangeRequestConfigured,
|
|
||||||
onChangeRequestToggle,
|
|
||||||
handleToggleEnvironmentOff,
|
|
||||||
setShowEnabledDialog,
|
|
||||||
]
|
|
||||||
);
|
|
||||||
|
|
||||||
const onActivateStrategies = useCallback(async () => {
|
|
||||||
if (isChangeRequestConfigured(environmentName)) {
|
|
||||||
onChangeRequestToggle(feature.name, environmentName, !value, true);
|
|
||||||
} else {
|
|
||||||
await handleToggleEnvironmentOn(true);
|
|
||||||
}
|
|
||||||
setShowEnabledDialog(false);
|
|
||||||
}, [
|
|
||||||
handleToggleEnvironmentOn,
|
|
||||||
setShowEnabledDialog,
|
|
||||||
isChangeRequestConfigured,
|
|
||||||
onChangeRequestToggle,
|
|
||||||
]);
|
|
||||||
|
|
||||||
const onAddDefaultStrategy = useCallback(async () => {
|
|
||||||
if (isChangeRequestConfigured(environmentName)) {
|
|
||||||
onChangeRequestToggle(feature.name, environmentName, !value, false);
|
|
||||||
} else {
|
|
||||||
await handleToggleEnvironmentOn();
|
|
||||||
}
|
|
||||||
setShowEnabledDialog(false);
|
|
||||||
}, [
|
|
||||||
isChangeRequestConfigured,
|
|
||||||
onChangeRequestToggle,
|
|
||||||
handleToggleEnvironmentOn,
|
|
||||||
]);
|
|
||||||
|
|
||||||
const key = `${feature.name}-${environmentName}`;
|
const key = `${feature.name}-${environmentName}`;
|
||||||
|
|
||||||
@ -219,7 +188,7 @@ export const FeatureToggleSwitch: VFC<IFeatureToggleSwitchProps> = ({
|
|||||||
? `Disable feature in ${environmentName}`
|
? `Disable feature in ${environmentName}`
|
||||||
: `Enable feature in ${environmentName}`
|
: `Enable feature in ${environmentName}`
|
||||||
}
|
}
|
||||||
checked={isChecked}
|
checked={value}
|
||||||
environmentId={environmentName}
|
environmentId={environmentName}
|
||||||
projectId={projectId}
|
projectId={projectId}
|
||||||
permission={UPDATE_FEATURE_ENVIRONMENT}
|
permission={UPDATE_FEATURE_ENVIRONMENT}
|
||||||
|
Loading…
Reference in New Issue
Block a user