mirror of
https://github.com/Unleash/unleash.git
synced 2025-02-09 00:18:00 +01:00
fix: default strategy stickiness (#4340)
This commit is contained in:
parent
ddbd619394
commit
36bde1b24b
@ -10,11 +10,11 @@ import { useNavigate } from 'react-router-dom';
|
||||
import useToast from 'hooks/useToast';
|
||||
import { IFeatureStrategy, IFeatureStrategyPayload } from 'interfaces/strategy';
|
||||
import {
|
||||
createStrategyPayload,
|
||||
featureStrategyDocsLink,
|
||||
featureStrategyDocsLinkLabel,
|
||||
featureStrategyHelp,
|
||||
formatFeaturePath,
|
||||
createStrategyPayload,
|
||||
featureStrategyDocsLinkLabel,
|
||||
} from '../FeatureStrategyEdit/FeatureStrategyEdit';
|
||||
import { CREATE_FEATURE_STRATEGY } from 'component/providers/AccessProvider/permissions';
|
||||
import { ISegment } from 'interfaces/segment';
|
||||
@ -31,23 +31,19 @@ import { useChangeRequestsEnabled } from 'hooks/useChangeRequestsEnabled';
|
||||
import { usePendingChangeRequests } from 'hooks/api/getters/usePendingChangeRequests/usePendingChangeRequests';
|
||||
import { usePlausibleTracker } from 'hooks/usePlausibleTracker';
|
||||
import useQueryParams from 'hooks/useQueryParams';
|
||||
import useProject from 'hooks/api/getters/useProject/useProject';
|
||||
import { useSegments } from 'hooks/api/getters/useSegments/useSegments';
|
||||
import { DEFAULT_STRATEGY } from 'component/project/Project/ProjectSettings/ProjectDefaultStrategySettings/ProjectEnvironment/ProjectEnvironmentDefaultStrategy/EditDefaultStrategy';
|
||||
import { useDefaultStrategy } from '../../../project/Project/ProjectSettings/ProjectDefaultStrategySettings/ProjectEnvironment/ProjectEnvironmentDefaultStrategy/EditDefaultStrategy';
|
||||
|
||||
export const FeatureStrategyCreate = () => {
|
||||
const projectId = useRequiredPathParam('projectId');
|
||||
const featureId = useRequiredPathParam('featureId');
|
||||
const environmentId = useRequiredQueryParam('environmentId');
|
||||
const strategyName = useRequiredQueryParam('strategyName');
|
||||
const { strategy: defaultStrategy, defaultStrategyFallback } =
|
||||
useDefaultStrategy(projectId, environmentId);
|
||||
const shouldUseDefaultStrategy: boolean = JSON.parse(
|
||||
useQueryParams().get('defaultStrategy') || 'false'
|
||||
);
|
||||
const { project } = useProject(projectId);
|
||||
|
||||
const defaultStrategy = project.environments.find(
|
||||
env => env.environment === environmentId
|
||||
)?.defaultStrategy;
|
||||
|
||||
const { segments: allSegments } = useSegments();
|
||||
const strategySegments = (allSegments || []).filter(segment => {
|
||||
@ -101,7 +97,7 @@ export const FeatureStrategyCreate = () => {
|
||||
|
||||
useEffect(() => {
|
||||
if (shouldUseDefaultStrategy) {
|
||||
const strategyTemplate = defaultStrategy || DEFAULT_STRATEGY;
|
||||
const strategyTemplate = defaultStrategy || defaultStrategyFallback;
|
||||
if (strategyTemplate.parameters?.groupId === '' && featureId) {
|
||||
setStrategy({
|
||||
...strategyTemplate,
|
||||
|
@ -20,28 +20,42 @@ import { ProjectDefaultStrategyForm } from './ProjectDefaultStrategyForm';
|
||||
import { CreateFeatureStrategySchema } from 'openapi';
|
||||
import useProject from 'hooks/api/getters/useProject/useProject';
|
||||
|
||||
export const DEFAULT_STRATEGY = {
|
||||
export const useDefaultStrategy = (
|
||||
projectId: string,
|
||||
environmentId: string
|
||||
) => {
|
||||
const { project, refetch } = useProject(projectId);
|
||||
|
||||
const defaultStrategyFallback = {
|
||||
name: 'flexibleRollout',
|
||||
constraints: [],
|
||||
parameters: {
|
||||
rollout: '100',
|
||||
stickiness: 'default',
|
||||
stickiness: project.defaultStickiness,
|
||||
groupId: '',
|
||||
},
|
||||
};
|
||||
const EditDefaultStrategy = () => {
|
||||
const projectId = useRequiredPathParam('projectId');
|
||||
const environmentId = useRequiredQueryParam('environmentId');
|
||||
|
||||
const { project, refetch: refetchProject } = useProject(projectId);
|
||||
|
||||
const strategy = project.environments.find(
|
||||
env => env.environment === environmentId
|
||||
)?.defaultStrategy;
|
||||
|
||||
return { defaultStrategyFallback, strategy, refetch };
|
||||
};
|
||||
|
||||
const EditDefaultStrategy = () => {
|
||||
const projectId = useRequiredPathParam('projectId');
|
||||
const environmentId = useRequiredQueryParam('environmentId');
|
||||
|
||||
const {
|
||||
defaultStrategyFallback,
|
||||
strategy,
|
||||
refetch: refetchProject,
|
||||
} = useDefaultStrategy(projectId, environmentId);
|
||||
|
||||
const [defaultStrategy, setDefaultStrategy] = useState<
|
||||
CreateFeatureStrategySchema | undefined
|
||||
>(strategy || DEFAULT_STRATEGY);
|
||||
>(strategy || defaultStrategyFallback);
|
||||
|
||||
const [segments, setSegments] = useState<ISegment[]>([]);
|
||||
const { updateDefaultStrategy, loading } = useProjectApi();
|
||||
|
Loading…
Reference in New Issue
Block a user